我的项目有三层,
web层
bll业务层
dal数据访问层,是通过webservice实现的,web.config里有数据库连接字符串。bll层添加web引用,调用dal层的webservice。
现在的问题是,bll层最终生成的 bll.dll 中是否也包含这个 webservice 的地址,
如果是的话,那么我的dal层的地址每变化一下,都要重新生成相应的 bll.dll,具体的情况我不是很清楚,
谁能给解释一下?
web层
bll业务层
dal数据访问层,是通过webservice实现的,web.config里有数据库连接字符串。bll层添加web引用,调用dal层的webservice。
现在的问题是,bll层最终生成的 bll.dll 中是否也包含这个 webservice 的地址,
如果是的话,那么我的dal层的地址每变化一下,都要重新生成相应的 bll.dll,具体的情况我不是很清楚,
谁能给解释一下?
解决方案 »
- 为什么page.ClientScript.RegisterStartupScript在net3.5下这个就不能用了
- SQL sever 查询一段时间的数据
- 请教解惑
- 如何改变WebResource.axd的地址,请幕白兄出手相助
- 问一个比较简单的问题,生成页面?(在线等)
- ssl的怪问题,高分求高手帮我看看啊啊????我都要要哭了!!!(分不够再加)
- 新建类库工程,开发DLL的时候,如何调用其它工程里的类?
- GridView如何根据标题和内容的宽度自动展开,不要换行挤在一起?而且是所有带有Gridview的页面~^^
- 用vs.net创建了一个移动web应用程序,编译后想在模拟器中显示,可总是提示“Unsupported Content-Type:text/html;charset=utf-8”,请问如
- 招聘.net兼职程序员
- SQL查询问题!
- 为什么我的vbscript代码是黑色的?
public MyWebService() {
this.Url = "http://localhost:4800/MyWebService.asmx";
}
你可以再添加一个构造函数,或者每次调用这个代理类的时候显式地设置URL(MyProxy.URL = "URL") public MyWebService(String url)
{
this.Url = url;
}
在这种情况下,只要你的DAL层的接口不变,不论里面的实现怎么改,你的bll层都不需要修改。
你直接调用函数就行。
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客户端。
第二种方法由于要修改的地方较多,能不这样尽量不这样,
我一直想要的效果就是你的第一种方法那样的,通过修改配置文件来实现,我的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 下面才起作用。
w.DownloadString("WebService地址");
这种方法也可以调用webservice
bll层应该默认也是从web.config读取url地址的啊,或者是bll.dll.config这样的配置文件,总之,重新编译只有在web service接口改了之后才有必要