C# 建立WCF服务端。http服务端,可用于ASP.net网页的后端、分布式数据库访问。

10 篇文章 0 订阅

声明提供服务的主机与服务名:

        private static ServiceHost _host;
        private static readonly string strServiceName = "/DataService";

启动服务端,默认端口8000:

        /// <summary>
        /// 启动系统主服务。
        /// </summary>
        /// <param name="port">端口</param>
        private static ServiceHost _host;
        private static void StartService(int port)
        {
            string strHostIPAddress = "localhost";

            UriBuilder builder = new UriBuilder(System.Uri.UriSchemeHttp, strHostIPAddress, port, strServiceName);
            _host = new ServiceHost(typeof(Common.DataService.DataService), builder.Uri);

#if DEBUG
            builder.Scheme = Uri.UriSchemeHttp;
            builder.Port = port;
            builder.Path = strServiceName + "/mex";

            Uri mexAddress = builder.Uri;

            ServiceMetadataBehavior smb = _host.Description.Behaviors.Find<ServiceMetadataBehavior>();

            if (smb != null)
            {
                smb.HttpGetEnabled = true;
                smb.HttpGetUrl = mexAddress;
            }
            else
            {
                smb = new ServiceMetadataBehavior();
                smb.HttpGetEnabled = true;
                smb.HttpGetUrl = mexAddress;
                _host.Description.Behaviors.Add(smb);
            }
#endif

            ServiceThrottlingBehavior throttling = _host.Description.Behaviors.Find<ServiceThrottlingBehavior>();

            if (throttling != null)
            {
                throttling.MaxConcurrentSessions = maxConnections;
            }
            else
            {
                throttling = new ServiceThrottlingBehavior();
                throttling.MaxConcurrentSessions = maxConnections;
                _host.Description.Behaviors.Add(throttling);
            }

            _host.AddServiceEndpoint(typeof(Common.DataInterface.DB.IDataBaseService), DataServiceHttpBinding, "");
#if DEBUG
            _host.AddServiceEndpoint(typeof(IMetadataExchange), new BasicHttpBinding(), mexAddress);
#endif

            _host.Open();
        }

private static BasicHttpBinding DataServiceHttpBinding
        {
            get
            {
                BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.None);
                binding.ReaderQuotas = System.Xml.XmlDictionaryReaderQuotas.Max;
                binding.TransferMode = TransferMode.Buffered;
                binding.MessageEncoding = WSMessageEncoding.Mtom;
                binding.MaxReceivedMessageSize = 2147483647;
                binding.MaxBufferPoolSize = 524288;
                binding.MaxBufferSize = 2147483647;
                binding.OpenTimeout = new TimeSpan(0, 1, 0);
                binding.CloseTimeout = new TimeSpan(0, 1, 0);
                binding.SendTimeout = new TimeSpan(0, 1, 0);
                binding.ReceiveTimeout = new TimeSpan(0, 1, 0);
                binding.AllowCookies = false;
                binding.BypassProxyOnLocal = false;
                binding.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;
                binding.TextEncoding = Encoding.UTF8;
                binding.UseDefaultWebProxy = true;
           

                return binding;
            }
        }

停止服务:

        private static void StopService()
        {
            if (_host.State != CommunicationState.Closed)
                _host.Close();
        }

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值