0

我开发了一个 Silverlight 聊天应用程序。在一个窗口中同时加载多个聊天窗口,每个聊天窗口都会创建一个到 wcf 双工服务的新连接。但是在每 10 个聊天窗口之后,它就会与 wcf 断开连接并停止工作。我为节流选项编写了一些代码,但它们不起作用。这是我的代码:-

public class PollingDuplexServiceHostFactory : ServiceHostFactoryBase
{
    public override ServiceHostBase CreateServiceHost(string constructorString,
        Uri[] baseAddresses)
    {
        return new PollingDuplexSimplexServiceHost(baseAddresses);
    }
 }

/// <summary>
/// PollingDuplexServiceHostFactory
/// </summary>
class PollingDuplexSimplexServiceHost : ServiceHost
{

    public PollingDuplexSimplexServiceHost(params System.Uri[] addresses)
    {
        InitializeDescription(typeof(JakayaChatService), new UriSchemeKeyedCollection(addresses));
        Description.Behaviors.Add(new ServiceMetadataBehavior());
        var throttle = Description.Behaviors.Find<ServiceThrottlingBehavior>();

        if (throttle == null)
        {
            throttle = new ServiceThrottlingBehavior
            {
                MaxConcurrentCalls = 1000,
                MaxConcurrentInstances = 1000,
                MaxConcurrentSessions = 1000
            };
            Description.Behaviors.Add(throttle);
        }


    }

    protected override void InitializeRuntime()
    {
        PollingDuplexBindingElement pdbe = new PollingDuplexBindingElement()
        {
            ServerPollTimeout = TimeSpan.FromSeconds(05),
            InactivityTimeout = TimeSpan.FromSeconds(3600)

        };

        // Add an endpoint for the given service contract.
        this.AddServiceEndpoint(
            typeof(IJakayaChatService),
            new CustomBinding(
                pdbe,
                new BinaryMessageEncodingBindingElement(),
                new HttpTransportBindingElement()),
                "");

        // Add a metadata endpoint.
        this.AddServiceEndpoint(
            typeof(IMetadataExchange),
            MetadataExchangeBindings.CreateMexHttpBinding(),
            "mex");

        base.InitializeRuntime();

    }
}
4

1 回答 1

0

10 个连接限制通常归因于操作系统。例如,Windows XP 有 10 个连接限制,而服务器操作系统将在生产环境中允许更多连接。也就是说,问题可能仅限于您的开发环境,并在部署到更高端的操作系统时消失。

MS 的注释:对于 Windows XP Professional,允许同时通过网络连接的其他计算机的最大数量为 10。此限制包括所有传输和资源共享协议的组合。对于 Windows XP Home Edition,允许同时通过网络连接的其他计算机的最大数量为五台。此限制是允许系统托管的其他计算机的同时会话数。此限制不适用于从远程计算机附加的管理工具的使用。

IIS 连接限制和优化 http://blogs.msdn.com/david.wang/archive/2006/04/12/HOWTO-Maximize-the-Number-of-Concurrent-Connections-to-IIS6.aspx

于 2009-08-12T14:22:15.627 回答