通常我们的项目调用WebService都是在Web项目中,VS2005会在Web.config中自动生成如下的配置,方便在部署后动态更改:
<
applicationSettings
>
<
WebTest
.Properties.Settings
>
<
setting
name
="WebTest_Service1_Service1"
serializeAs
="String"
>
<
value
>
http://localhost/WebService/Service1.asmx
</
value
>
</
setting
>
</
WebTest.Properties.Settings
>
</
applicationSettings
>
public
static
void
AutoBuildConfig()
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
Properties.Settings.Default.Properties["XXX_XXX_Business_XXXMailService_MailService"].DefaultValue
= ConfigHelper.GetParameterValue("XXXMailServiceUrl");
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
Properties.Settings.Default.Save();
Properties.Settings.Default.Reload();
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
目前做“XXX三期3.2”的开发时,在“XXX.XXX.Business”中调用了XXX的WebService,但对于类库项目,其如上的配置信息是生成在app.config中的,那么,如何将其做成动态可配置的呢?
通过实验,总结了三种实现方法:
1、将app.config中的配置信息拷贝到Web.config中,这是最简单的一种方法;
2、在WebService调用时临时指定Url,这也是一种可用方法;
3、我希望使用统一参数配置组件的CommonConfig.xml来定义待调用的WebService路径,又不想在程序中临时指定Url,为此,从网上找了一种看起来比较优雅实则费力不讨好的编程实现方法。:)
1)在“XXX.XXX.Business”中新建类WebServiceConfig,定义如下方法:
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/1327ab569c1ae82736693a50b8e33378.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0196c3df5ea9e936f21e9932cca91014.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
2)在Web项目的Global的Application_Start中调用上面的方法:WebServiceConfig.AutoBuildConfig();
这样,也实现了WebService路径的动态配置,还可通过参数配置的管理页面进行管理。可惜,还是要重启Web才能生效,倒不如第2种方法的实时性强。