1. ホーム
  2. wcf

[解決済み] 設定ファイルを使用しないWCFの構成

2023-03-31 18:16:49

質問

設定ファイルを使用せずにプログラムでWCFサービスを公開する方法の良い例を知っている人はいますか?私は、サービスオブジェクトモデルがWCFではるかに豊富であることを知っているので、それが可能であることを知っています。ただ、その方法を示す例を見たことがありません。逆に、設定ファイルを使用しない消費もどのように行われるのか見てみたいです。

誰もが尋ねる前に、私は設定ファイルなしでこれを行うための非常に特別な必要性を持っています。通常、私はそのような行為を推奨しませんが、私が言ったように、この場合は非常に特殊なニーズがあります。

どのように解決するのですか?

私が発見したように、設定ファイルなしでウェブサービスを消費することは非常に簡単です。単にバインディング オブジェクトとアドレス オブジェクトを作成し、クライアント プロキシのコンストラクタまたは汎用 ChannelFactory インスタンスにそれらを渡す必要があります。使用する設定を確認するためにデフォルトの app.config を見ることができ、それからプロキシをインスタンス化する静的なヘルパーメソッドをどこかに作成します。

internal static MyServiceSoapClient CreateWebServiceInstance() {
    BasicHttpBinding binding = new BasicHttpBinding();
    // I think most (or all) of these are defaults--I just copied them from app.config:
    binding.SendTimeout = TimeSpan.FromMinutes( 1 );
    binding.OpenTimeout = TimeSpan.FromMinutes( 1 );
    binding.CloseTimeout = TimeSpan.FromMinutes( 1 );
    binding.ReceiveTimeout = TimeSpan.FromMinutes( 10 );
    binding.AllowCookies = false;
    binding.BypassProxyOnLocal = false;
    binding.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;
    binding.MessageEncoding = WSMessageEncoding.Text;
    binding.TextEncoding = System.Text.Encoding.UTF8;
    binding.TransferMode = TransferMode.Buffered;
    binding.UseDefaultWebProxy = true;
    return new MyServiceSoapClient( binding, new EndpointAddress( "http://www.mysite.com/MyService.asmx" ) );
}