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");
                    }
                }
            }
    
        }
  • 相关阅读:
    SQLServer查看死锁
    css图片叠加和底部定位
    vuejs
    如何优雅的使用vue+vux开发app -03
    ECMAScript 6 入门
    VUX 移动前端框架使用文档
    如何优雅的使用vue+vux开发app -02
    vuejs切换视图同时保持状态
    vuejs与服务器通信
    vuejs件同一个挂载点上切换组
  • 原文地址:https://www.cnblogs.com/Mind-Hacker/p/3407471.html
Copyright © 2011-2022 走看看