6

app.config に次の構成があります。

    </binding>
  </basicHttpBinding>
</bindings>



<behaviors>
  <serviceBehaviors>
    <behavior name="myBehavior">
      <serviceMetadata httpGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="true"/>
    </behavior>
  </serviceBehaviors>
</behaviors>

このサービスをデスクトップ アプリからプログラムで公開したいと考えています。

ホスト インスタンスを定義します。

ServiceHost host = new ServiceHost(typeof(MyType), new Uri("http://" + hostName + ":" + port + "/MyName"));

次に、バインディングを使用してエンドポイントを追加します。

var binding = new BasicHttpBinding("myBinding");
host.AddServiceEndpoint(typeof(IMyInterface), binding, "MyName");

ここで、次のコードを、構成ファイルからmyBehaviorという名前の動作を読み取り、動作オプションをハードコーディングしないコードに置き換えたいと思います。

ServiceMetadataBehavior smb = new ServiceMetadataBehavior() { HttpGetEnabled = true };    
host.Description.Behaviors.Add(smb);   
// Enable exeption details
ServiceDebugBehavior sdb = host.Description.Behaviors.Find<ServiceDebugBehavior>();
sdb.IncludeExceptionDetailInFaults = true;

次に、ホストを開くことができます。

host.Open();

* 編集 *

構成ファイルを使用したサービスの構成

この方法は必要ありません。ホストが構成ファイルから自動的に構成を取得するようにし、手動で指定しないようにする必要があります。この記事 (構成ファイルを使用したサービスの構成) を読んでください。 C# では 1 行、config では数行です。

これは (コードで WCF サービスを構成する) に関する 2 番目の記事です。

これを回答として追加します。

4

3 に答える 3

6

構成ファイルを使用したサービスの構成

この方法は必要ありません。ホストが構成ファイルから自動的に構成を取得するようにし、手動で提供しないようにする必要があります。この記事(構成ファイルを使用したサービスの構成)を読んでください。 C#では1行、configでは数行。

これは(コードでのWCFサービスの構成)に関する2番目の記事です。私のせいは、2つの方法を組み合わせようとしていたことです。

于 2012-12-29T16:43:45.647 に答える