HTTP Keep-alive и ServiceHost / C #? - PullRequest
       0

HTTP Keep-alive и ServiceHost / C #?

1 голос
/ 15 апреля 2011

Как включить / отключить функцию HTTP Keep-alive и установить тайм-аут соединения для автономной службы с помощью конфигурации приложения и C # ServiceHost?

Например,

MyService service = new MyService();
ServiceHost serviceHost = new ServiceHost(service);
serviceHost.Open();

Что я должен вставить в конфигурацию приложения, чтобы установить поддержку HTTP и время ожидания.

<configuration>
  <system.serviceModel>
  <services>
    <service name="MyService" behaviorConfiguration="myServiceBehavior">
    <endpoint address="http://localhost:9005/"
          binding="webHttpBinding"
          contract="IMyService"
          behaviorConfiguration="myServerEndpointBehavior"/>
    </service>
  </services>
  </system.serviceModel>
  <!-- WHERE TO ENABLE/DISABLE http keep alive and timeout -->
</configuration>

Настройки в IIS находятся, если вы заходите в IIS Manager.Щелкните правой кнопкой мыши на «Веб-сайте по умолчанию» -> Свойства-> Веб-сайт-> Подключения.Могу ли я сделать это через конфигурацию system.serviceModel?

1 Ответ

2 голосов
/ 15 апреля 2011

Поддержка активности http-соединений включена по умолчанию. Если вы хотите отключить его, вы должны создать пользовательскую привязку:

<bindings>
    <customBinding>
        <binding name="WebHttpWithoutKeepAlive">
            <webMessageEncoding />
            <httpTransport keepAliveEnabled="false" />
        </binding>
    </customBinding>
</bindings>
<services>
    <service name="MyService" behaviorConfiguration="myServiceBehavior">
    <endpoint address="http://localhost:9005/"
          binding="customBinding"
          bindingConfiguration="WebHttpWithoutKeepAlive"
          contract="IMyService"
          behaviorConfiguration="myServerEndpointBehavior"/>
    </service>
</services>

Как установить тайм-аут поддержания активности - загадка . В вашем сценарии нет «тайм-аута сервиса» (это имеет смысл только в привязках к сеансу), и тайм-аут поддержки активности не прерывает связь между клиентом и сервисом.

Btw. ваш пример кода определяет сервис как одноэлементный объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...