我有一个使用asmx Web服务的WCF应用程序。我在应用程序的一百万个地方使用网络服务:
public string LogOnUser(string username, string password, string db)
{
var wsi = new ASMXServiceInterface();
return wsi.LogIn();
}
public string GetNotes(string username, string password, string db)
{
var wsi = new ASMXServiceInterface();
return wsi.GetNotes();
}
etc, etc etc...
当然我想在构造函数中设置服务的url,但是它在reference.cs中自动生成,如果我在那里更改它,它可以工作,但如果我更新我的引用(我会)它丢失了我必须手动再做一次:
/// <remarks/>
public ASMXServiceInterface()
{
this.Url =
System.Web.Configuration.WebConfigurationManager.AppSettings["RQTCSServiceURL"];
}
Web服务网址需要是动态的,因为它的不同版本已经实现。如何在我的WCF项目中设置我的Web服务的URL一次,这样可以在web.config中更改服务的url而不必在reference.cs中进行更改?
答案 0 :(得分:4)
您可以通过将网址行为转换为动态
来更改自动生成的网址服务网址请参阅有关如何执行http://www.codeproject.com/Articles/12317/How-to-make-your-Web-Reference-proxy-URL-dynamic
的示例答案 1 :(得分:3)
您可以通过向web.config添加密钥来执行此操作,例如:
<add key="webserviceURL" value ="https://mywebservice.com/WebService.asmx" />
然后在您的代码中,执行以下操作:
private static WebService createWebService() {
WebService service= new WebService();
string url = ConfigurationManager.AppSettings["webserviceURL"];
if ( !string.IsNullOrEmpty(url) ) {
service.Url = url;
}
return service;
}