WCF Сервисное поведение

У меня есть собственная служба WCF, которую я размещаю в службе Windows. Моя привязка настроена как basicHttpBinding.

Когда я запускаю службу, я запускаю команду netsh http show servicestate и вижу, что моя служба прослушивает; Однако я не могу настроить параметры правильно.

При размещении в IIS он работает примерно на 20% медленнее, поэтому я хочу разместить его самостоятельно. Как я могу настроить параметры моей собственной службы WCF для соответствия IIS? Параметры, на которые я обращаю особое внимание, - это время ожидания, Максимальное количество подключений, Время ожидания и Максимальное количество запросов. Я попытался установить служебное поведение; однако, это ничего не делает. Я добавил Max Connections в Реестр в разделе HTTP/Parameters без удачи. Любая помощь приветствуется.

Вот вывод при размещении под IIS:

Server session ID: F9000000200015DA

    Version: 2.0
    State: Active
    Properties:
        Max bandwidth: 4294967295
        Timeouts:
            Entity body timeout (secs): 120
            Drain entity body timeout (secs): 120
            Request queue timeout (secs): 65535
            Idle connection timeout (secs): 120
            Header wait timeout (secs): 120
            Minimum send rate (bytes/sec): 240
    URL groups:
    URL group ID: F600000040001737
        State: Active
        Request queue name: MyService
        Properties:
            Max bandwidth: inherited
            Max connections: 4294967295
            Timeouts:
                Entity body timeout (secs): 120
                Drain entity body timeout (secs): 120
                Request queue timeout (secs): 65535
                Idle connection timeout (secs): 120
                Header wait timeout (secs): 0
                Minimum send rate (bytes/sec): 0
            Logging information:
                Log directory: C:\inetpub\logs\LogFiles\W3SVC2
                Log format: 0
            Authentication Configuration:
                Authentication schemes enabled:
            Number of registered URLs: 1
            Registered URLs:
                HTTP://*:80/

Request queues:
    Request queue name: MyService
        Version: 2.0
        State: Active
        Request queue 503 verbosity level: Basic
        Max requests: 3000
        Number of active processes attached: 1
        Controller process ID: 1400
        Process IDs:

Вот вывод, когда я сам хостинг:

Server session ID: FC00000120000229

    Version: 2.0
    State: Active
    Properties:
        Max bandwidth: 4294967295
        Timeouts:
            Entity body timeout (secs): 120
            Drain entity body timeout (secs): 120
            Request queue timeout (secs): 120
            Idle connection timeout (secs): 120
            Header wait timeout (secs): 120
            Minimum send rate (bytes/sec): 150
    URL groups:
    URL group ID: FB000001400005DE
        State: Active
        Request queue name: Request queue is unnamed.
        Properties:
            Max bandwidth: inherited
            Max connections: inherited
            Timeouts:
                Timeout values inherited
            Number of registered URLs: 1
            Registered URLs:
                HTTP://+:80/MyService/

Request queues:
    Request queue name: Request queue is unnamed.
        Version: 2.0
        State: Active
        Request queue 503 verbosity level: Basic
        Max requests: 1000

Вот мой конфигурационный файл сервиса:

<?xml version="1.0"?> <configuration>   <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="MyThrottle">
          <serviceThrottling maxConcurrentCalls="3000" maxConcurrentSessions="3000"
            maxConcurrentInstances="12500" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <basicHttpBinding>
        <binding name="MyConfig" closeTimeout="00:10:00"
          openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"
          maxReceivedMessageSize="10485760" useDefaultWebProxy="false">
          <readerQuotas maxDepth="999999999" maxStringContentLength="999999999"
            maxArrayLength="999999999" maxBytesPerRead="999999999" maxNameTableCharCount="999999999" />
          <security mode="None">
            <transport clientCredentialType="None" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <services>
      <service behaviorConfiguration="MyThrottle" name="This.MyService">
        <endpoint address="http://localhost:80/MyService" binding="basicHttpBinding"
          bindingConfiguration="MyConfig" name="MyService"
          contract="This.IMyService" />
      </service>
    </services>   </system.serviceModel> </configuration>

1 ответ

Решение

Вот официальный ответ от команды Microsoft HTTP.SYS:

"Максимальное количество подключений" = вывод HttpServerConnectionsProperty имеет другое значение, чем "Максимальное количество запросов" = HttpServerQueueLengthProperty.

HttpListener не позволяет устанавливать свойство Max Connections (HttpServerConnectionsProperty) для группы URL-адресов или свойство Макс. Запросы (HttpServerQueueLengthProperty) для очереди запросов, поэтому WCF не может устанавливать параметры http.sys при самостоятельном размещении через код.

Другие вопросы по тегам