我在生产中部署了一个引用外部Web服务的Web应用程序。 查看Visual Studio中的源代码,我看到Web referebce是静态链接的。在代理reference.cs中,它是url的硬编码。 this.Url =“http://server/WebService/Service.asmx”;
我可以更改网址。但是,我希望代理从web.config文件中获取url。如何在不使用Visual Studio将url行为设置为动态的情况下增强代理代码?我很乐意在C#中获得一些代码示例。
答案 0 :(得分:1)
将行为更改为动态时,可以使用Visual Studio生成的相同代码:
public Service1() {
string urlSetting = System.Configuration.ConfigurationSettings.AppSettings["WebApplication1.localhost.Service1"];
if ((urlSetting != null)) {
this.Url = string.Concat(urlSetting, "");
}
else {
this.Url = "http://localhost/WebService1/Service1.asmx";
}
}
答案 1 :(得分:1)
在Settings.settings
项目的属性文件夹中,为其中一个属性添加网络服务网址设置。
然后修改this.Url = Properties.Settings.YourWebServiceUrlName
。
这将在您的web.config中创建一个配置,您可以在每个服务器的基础上进行更改。我通常将属性设置设置为我的生产服务器设置,然后修改我的本地开发环境的web.config。
答案 2 :(得分:1)
我认为网络参考的在线文档总结得相当好:
如果您将URL行为设置为 代理的静态默认值 class使用a设置URL属性 创建时的硬编码URL 班级的实例。
如果设置了Web的URL行为 引用动态,应用程序 从运行时获取URL 你的appSettings元素 应用程序的配置文件。
来源:MSDN,Web References in Visual Studio
换句话说,是的,如果要从配置文件中设置它,必须在Visual Studio(或其他编辑器)中将其更改为动态。