当前位置:  开发笔记 > 编程语言 > 正文

如何在不重新编译的情况下动态切换.NET中的Web服务地址?

如何解决《如何在不重新编译的情况下动态切换.NET中的Web服务地址?》经验,为你挑选了5个好方法。

我有引用Web服务的代码,我希望该Web服务的地址是动态的(从数据库,配置文件等中读取),以便轻松更改.其中一个主要用途是部署到机器名称和IP地址不同的多个环境.所有部署中的Web服务签名都是相同的,只是位于其他位置.

也许我刚刚被Visual Studio"添加Web引用"向导所破坏 - 看起来这应该是相对简单的事情.



1> Eric Schoono..:

生成Web引用并单击解决方案资源管理器中的Web引用时.在属性窗格中,您应该看到如下内容:

Web引用属性

将值更改为dynamic将在app.config中添加一个条目.

以下是CodePlex文章,其中包含更多信息.


它将被重命名为[OutputAssemblyName] .config.示例:MyProject.exe.config
下面的Brad Bruce的答案在某些情况下更有帮助 - 您可以更改Web服务对象的Url属性.

2> Brad Bruce..:

如果您真的动态设置它,则应设置要调用的代理类实例的.Url字段.

在程序中设置.config文件中的值:

    是一个烂摊子;

    在下一个应用程序启动之前可能无法读取.

如果每次安装只需要做一次,我会同意其他海报并使用.config文件和动态设置.


例如.`var api = new MyApi.Service(); api.Url ="http://yetanotherurl.com";`

3> rwg..:

我知道这是一个老问题,但我们的解决方案比我在这里看到的要简单得多.我们将它用于VS2010及以上的WCF调用.字符串网址可以来自应用设置或其他来源.在我的例子中,它是一个用户选择服务器的下拉列表.该服务是通过VS添加服务引用配置的.

private void CallTheService( string url )
{
   TheService.TheServiceClient client = new TheService.TheServiceClient();
   client.Endpoint.Address = new System.ServiceModel.EndpointAddress(url);
   var results = client.AMethodFromTheService();
}



4> John Kocktoa..:

几天我一直在努力解决这个问题,最后点击了灯泡.能够在运行时更改Web服务的URL的KEY覆盖了构造函数,我使用了部分类声明.以上,还必须将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;
            }
        }
    }
}



5> Gulzar Nazim..:

将URL行为更改为" 动态 ".

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有