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");
                    }
                }
            }
    
        }
  • 相关阅读:
    Common Element in Two Sorted Sets
    Nearest Points on a Plane
    Influencer Finder
    Range of Intervals
    *Common characters
    自定义栈 和装箱,拆箱
    1.Vector(同步)和ArrayList(异步)异同
    STL中的迭代器的使用
    如何优化limit?
    mysql五大引擎之间的区别和优劣之分
  • 原文地址:https://www.cnblogs.com/Mind-Hacker/p/3407471.html
Copyright © 2011-2022 走看看