以程式設計方式將後設資料端點新增到服務

如果你還希望在沒有配置檔案的情況下公開後設資料,則可以通過程式設計方式建立 ServiceHost 來構建示例:

public ConsoleHost()
{
    mHost = new ServiceHost(typeof(Example), new Uri("http://localhost:8000/Example"), new Uri("net.tcp://9000/Example"));

    NetTcpBinding tcp = new NetTcpBinding();

    mHost.AddServiceEndpoint(typeof(IExample), tcp, "net.tcp://localhost:9000/Example");            

    ServiceMetadataBehavior metaBehavior = mHost.Description.Behaviors.Find<ServiceMetadataBehavior>();

    if (metaBehavior == null)
    {
        metaBehavior = new ServiceMetadataBehavior();
        metaBehavior.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
        metaBehavior.HttpGetEnabled = true;

        mHost.Description.Behaviors.Add(metaBehavior);
        mHost.AddServiceEndpoint(ServiceMetadataBehavior.MexContractName, MetadataExchangeBindings.CreateMexHttpBinding(), "mex");
    }

    mHost.Open();
}
  1. 建立一個 ServiceHost 例項,傳遞具體的類型別和零個或多個 baseaddress Uri。
  2. 當你使用 mexHttpBinding 時,你必須新增 http:// localhost:8000 /示例 baseaddress
  3. 在這種情況下構造所需的繫結 NetTcpBinding。
  4. 呼叫 AddServiceEndpoint 傳遞 Address,Binding 和 Contract。 (ABC)。
  5. 構造 ServiceMetadataBehavior
  6. 將 HttpGetEnabled 設定為 true
  7. 將後設資料行為新增到 behavior 集合。
  8. 呼叫 AddServiceEndpoint 傳遞常量以進行後設資料交換
  9. 開啟主機。