引用webservice的问题

cqq 2010-06-18 09:51:10
我的项目有三层,
web层
bll业务层
dal数据访问层,是通过webservice实现的,web.config里有数据库连接字符串。

bll层添加web引用,调用dal层的webservice。


现在的问题是,bll层最终生成的 bll.dll 中是否也包含这个 webservice 的地址,
如果是的话,那么我的dal层的地址每变化一下,都要重新生成相应的 bll.dll,

具体的情况我不是很清楚,
谁能给解释一下?


...全文
205 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
guyehanxinlei 2010-06-21
  • 打赏
  • 举报
回复
Friendly Up!
S_trance 2010-06-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 archu 的回复:]
用WSDL.exe对Web Service生成代理类,把这个代理类封装在bll.dll里面。参考:http://msdn.microsoft.com/en-us/library/d2s8y7bs.aspx

这个所生成的代理类里面默认会有个构造函数如下:

C# code

/// <remarks/>
public MyWebService() {
……
[/Quote]
呵呵

LZ 你的BLL层添加Web 引用、? 是web层添加bll吧,
微工程 2010-06-21
  • 打赏
  • 举报
回复
在asp.net里面,直接引用web,会生成相应代码
你直接调用函数就行。
mapserver 2010-06-21
  • 打赏
  • 举报
回复
引用webservice的时候,有一个默认地址。可以在new的时候,修改这个url地址。
IHandler 2010-06-21
  • 打赏
  • 举报
回复
web服务地址包含在DAL中,每次修改需要重新编译和引用
gongsun 2010-06-21
  • 打赏
  • 举报
回复
...
cqq 2010-06-21
  • 打赏
  • 举报
回复
顶顶,一会试一下。
哥本哈士奇 2010-06-21
  • 打赏
  • 举报
回复
现在的问题是,bll层最终生成的 bll.dll 中是否也包含这个 webservice 的地址

可以包含,也可以不包含。不包含的话,就是把地址写到配置文件中,这样的不好是服务代理层你可能需要自己写。

如果包含的话,重新生成在所难免,如果你用微软默认生成代理类的话。
-深白色- 2010-06-21
  • 打赏
  • 举报
回复
呃。。。。你bll层的url应该也在配置文件可以修改的,不用重新编译。不太清楚你的网站逻辑结构,呵呵
bll层应该默认也是从web.config读取url地址的啊,或者是bll.dll.config这样的配置文件,总之,重新编译只有在web service接口改了之后才有必要
oufeiren 2010-06-21
  • 打赏
  • 举报
回复
不需要添加引用
oufeiren 2010-06-21
  • 打赏
  • 举报
回复
System.Net.WebClient w = new System.Net.WebClient();
w.DownloadString("WebService地址");
这种方法也可以调用webservice
cqq 2010-06-21
  • 打赏
  • 举报
回复
谢谢13楼的,
第二种方法由于要修改的地方较多,能不这样尽量不这样,
我一直想要的效果就是你的第一种方法那样的,通过修改配置文件来实现,

我的web层的 web.config 中确实出现了这些webservice的地址,
大体结构是这样的

<applicationSettings>
<Business.Properties.Settings>
<!-- WebService 地址需要配置-->
<setting name="Business_DmDa_DMDataAccess" serializeAs="String">
<value>http://192.168.1.122:8088/DMDataAccess/DMDataAccess.asmx</value>
</setting>
经过试验发现,
我要修改webservice的地址,
我必须修改 web层的web.config 中上面的这个地址,同时我还要重新在bll层改一下web引用的地址
然后重新编译bll层,然后拷贝到web/bin 下面才起作用。

菜鸟在成长 2010-06-21
  • 打赏
  • 举报
回复
再不行的话,就找本书去看看吧
-深白色- 2010-06-21
  • 打赏
  • 举报
回复
........................
cqq 2010-06-21
  • 打赏
  • 举报
回复
还没弄明白, 谁能说的清楚一点呀、。
-深白色- 2010-06-21
  • 打赏
  • 举报
回复
楼主,有几种方法可以实现
1.不用修改任何代码,直接修改web.config文件
vs添加web service引用的时候,会在web.config中的appSetting里面添加一个web service的url地址。
大概类似如下
<add key="localhost.WebService" value="http://localhost:5326/WebSite3/WebService.asmx"/>
如果楼主web service地址换了,直接修改这里的value即可

2.添加一个自定义的类,继承vs生成的web service代理类,在这个自定义类里面,可以添加带url的构造函数,如
public class CustomedWebService:VSGeneratedWebService
{
public CustomedWebService(string url)
{
//add code here
}

}
这样在使用的时候只要使用上面这个类就可以了

3.可以建一个partial类,当然,这和2方法差不多,都是扩展原有的vs生成的web service类,不过用partial的时候,需要把vs自动生成的web service代理类也改成partial的,其余不用修改。
ps:.net3.5中,并没有自动生成的web service类的源代码,所以此法不可用。


总结:以上三种方法,均有一个前提,就是web service的服务器端,只是更改了web service的地址,而没有更改web service接口,一旦接口更改,必须重新编译。除非使用动态编译的ws客户端。
archu 2010-06-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 vip__888 的回复:]
说的不错
[/Quote]

说得真好
vip__888 2010-06-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 archu 的回复:]
用WSDL.exe对Web Service生成代理类,把这个代理类封装在bll.dll里面。参考:http://msdn.microsoft.com/en-us/library/d2s8y7bs.aspx

这个所生成的代理类里面默认会有个构造函数如下:

C# code

/// <remarks/>
public MyWebService() {
……
[/Quote]
说的不错
ranzige 2010-06-18
  • 打赏
  • 举报
回复
写在web.config中不行吗?
archu 2010-06-18
  • 打赏
  • 举报
回复
用WSDL.exe对Web Service生成代理类,把这个代理类封装在bll.dll里面。参考:http://msdn.microsoft.com/en-us/library/d2s8y7bs.aspx

这个所生成的代理类里面默认会有个构造函数如下:

/// <remarks/>
public MyWebService() {
this.Url = "http://localhost:4800/MyWebService.asmx";
}


你可以再添加一个构造函数,或者每次调用这个代理类的时候显式地设置URL(MyProxy.URL = "URL")

public MyWebService(String url)
{
this.Url = url;
}


在这种情况下,只要你的DAL层的接口不变,不论里面的实现怎么改,你的bll层都不需要修改。
加载更多回复(1)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧