zoukankan      html  css  js  c++  java
  • 扩展ServiceHost<T>类

      public class ServiceHost<T> : ServiceHost
        {
    
            public void EnableMetadataExchange(bool enableHttpGet = true)
            {
                if (State == CommunicationState.Opened)
                {
                    throw new InvalidOperationException("Host is already opened");
                }
    
                var metadataBehavior = Description.Behaviors.Find<ServiceMetadataBehavior>();
                if (metadataBehavior == null)
                {
                    metadataBehavior = new ServiceMetadataBehavior();
                    Description.Behaviors.Add(metadataBehavior);
    
                    if (BaseAddresses.Any(uri => uri.Scheme == "http"))
                    {
                        metadataBehavior.HttpGetEnabled = enableHttpGet;
                    }
                }
    
                AddAllMexEndpoints();
            }
    
            public bool HasMexEndpoint
            {
                get
                {
                    return
                        Description.Endpoints.Any(endpoint => endpoint.Contract.ContractType == typeof (IMetadataExchange));
                }
            }
    
            public void AddAllMexEndpoints()
            {
                Debug.Assert(HasMexEndpoint == false);
    
                foreach (var baseAddress in BaseAddresses)
                {
                    Binding binding = null;
    
                    switch (baseAddress.Scheme)
                    {
                        case "net.tcp":
                            binding = MetadataExchangeBindings.CreateMexTcpBinding();
                            break;
                        case "net.pipe":
                            binding = MetadataExchangeBindings.CreateMexNamedPipeBinding();
                            break;
                        case "http":
                            binding = MetadataExchangeBindings.CreateMexHttpBinding();
                            break;
                        case "https":
                            binding = MetadataExchangeBindings.CreateMexHttpsBinding();
                            break;
                    }
    
                    if (binding != null)
                    {
                        AddServiceEndpoint(typeof(IMetadataExchange),binding,"MEX");
                    }
                }
            }
    
        }
  • 相关阅读:
    spsss基本统计分析操作攻略
    MATLAB读取Excel表格数据和处理数据
    MATLAB 雷达图画图函数
    spss新手教程
    MATLAB绘制饼状图
    高斯消元法解线性方程组(C++实现)
    Java和matlab混合编程
    Matlab与Java混合编程的教程
    两组数据的相关性分析
    vs2013+QT5环境
  • 原文地址:https://www.cnblogs.com/Mind-Hacker/p/3407471.html
Copyright © 2011-2022 走看看