我有引用web服务的代码,并且我希望该web服务的地址是动态的(从数据库、配置文件等读取)。所以它很容易改变。它的一个主要用途是部署到计算机名称和IP地址不同的多个环境中。web服务签名在所有部署中都是相同的,只是位于其他地方。
也许我只是被Visual Studio的“添加Web引用”向导宠坏了--尽管这看起来应该是相对容易的事情。
发布于 2008-09-24 04:24:55
当您生成web引用并在解决方案资源管理器中单击该web引用时。在属性窗格中,您应该看到如下所示:
将该值更改为dynamic将在app.config中放置一个条目。
下面是包含更多信息的CodePlex article。
发布于 2016-11-30 22:55:34
我知道这是一个古老的问题,但我们的解决方案比我在这里看到的要简单得多。我们使用它来调用VS2010和up的WCF。字符串url可以来自应用程序设置或其他来源。在我的例子中,它是一个下拉列表,用户可以在其中选择服务器。TheService是通过VS添加服务引用配置的。
private void CallTheService( string url )
{
TheService.TheServiceClient client = new TheService.TheServiceClient();
client.Endpoint.Address = new System.ServiceModel.EndpointAddress(url);
var results = client.AMethodFromTheService();
}
发布于 2013-06-27 20:51:12
我已经在这个问题上挣扎了几天,最后电灯泡终于打开了。能够在运行时更改KEY服务的URL的关键是覆盖构造函数,我使用部分类声明做到了这一点。如上所述,还必须将URL行为设置为Dynamic。
这基本上创建了一个web服务包装器,如果您必须在某个时候通过添加服务引用重新加载web服务,您不会丢失您的工作。Microsoft对分部类的帮助特别说明了这种构造的部分原因是为了创建web服务包装器。http://msdn.microsoft.com/en-us/library/wa80x488(v=vs.100).aspx
// Web Service Wrapper to override constructor to use custom ConfigSection
// app.config values for URL/User/Pass
namespace myprogram.webservice
{
public partial class MyWebService
{
public MyWebService(string szURL)
{
this.Url = szURL;
if ((this.IsLocalFileSystemWebService(this.Url) == true))
{
this.UseDefaultCredentials = true;
this.useDefaultCredentialsSetExplicitly = false;
}
else
{
this.useDefaultCredentialsSetExplicitly = true;
}
}
}
}
https://stackoverflow.com/questions/125399
复制相似问题