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

那时,我添加了一个Web引用,并将其设置为dynamic,并在<applicationSettings>web.config中选择了一些配置代码。

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

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

那么,如何包含我的Web参考并使其在配置文件中可调?

要么告诉Web参考编辑器使用web.config,要么?
还是将settings.settings文件设置为xml以便可以在部署时进行更改?

否则任何其他帮助也将是很棒的...

最佳答案

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

例如

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
  }
}

关于c# - 告诉Web引用使用web.config或如何使设置可编辑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13607074/

10-11 15:16
查看更多