2

ASP.NET 2.0 (3.5 SP1) アプリを .NET 4.0 に移行しています。SQL Server Reporting Services 2008R2 Web サービスを利用します。この Web サービスは、昔ながらの asmx SOAP Web サービスです。

当時、私は動的に設定した Web 参照を追加しました。これ<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しても役に立ちません。settings.settingsvs によって生成されたプロキシ クラスが...を予期していたため、名前空間のコンパイル エラーが発生しました。

では、Web 参照を含めて、構成ファイル内で調整できるようにするにはどうすればよいでしょうか?

Web 参照エディターに を使用するように伝えますweb.configか? または、settings.settings展開時に変更できるように、ファイルを xml として使用できるようにしますか?

または、他のヘルプも素晴らしいでしょう...

4

1 に答える 1

2

これは役に立つかもしれませんし、役に立たないかもしれませんが、これはこの問題を回避するための 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
  }
}
于 2012-11-28T17:37:42.067 に答える