告诉Web引用使用web.config或如何使settings.settings可编辑

时间:2012-11-28 14:13:32

标签: c# asp.net web-config ssrs-2008 settings.settings

我正在将ASP.NET 2.0(3.5 SP1)应用程序迁移到.NET 4.0。它利用SQL Server Reporting Services 2008R2 Web服务。这个Web服务是一个老式的asmx soap web服务。

当时我添加了一个我设置为动态的网络参考,并在<applicationSettings>的{​​{1}}中选择了一些配置代码。

迁移到Visual Studio 2010和.Net 4.0后,我不得不重新添加Web引用。 .Net 2.0 Web引用对话框按原样添加代理类。但现在它在web.config文件夹中包含settings.settings文件到我的项目。我可以忍受,但编译后Properties文件不可用。看起来它已被编译到dll中。

即使粘贴settings.settings中的settings.settings配置并删除web.config文件也无济于事。我收到命名空间编译错误,因为vs生成的代理类需要settings.settings ...

那么如何包含我的Web引用并使其在配置文件中可调整?

要么告诉网络参考编辑器使用settings.settings,也许? 或者将web.config文件作为xml提供,以便在部署时更改它?

或者任何其他帮助也很棒......

1 个答案:

答案 0 :(得分:2)

这可能会或可能不会对您有所帮助,但这是我们解决此问题的Web服务方法。我们为给定的Web服务创建一个包装类,每次实例化代理类时,我们都会在引用<appSettings />节点的代码中设置URL。

e.g。

public class MyWebService
{
  private static readonly string _serviceUrl = ConfigurationManager.AppSettings["serviceUrl"] ?? "http://someserviceurl.com/service.asmx";

  public MyWebService()
  {
  }

  private WebServiceClient GetClient()
  {
    WebServiceClient client = new WebServiceClient();
    client.Url = _serviceUrl;
    return client;
  }

  private void Method1()
  {
    var client = GetClient();
    // do stuff
  }
}