2009-02-17 5 views
1

У меня есть служба wcf, которая должна реализовывать обратные вызовы и размещаться на IIS 6.0. Поскольку IIS 6.0 не поддерживает привязку net.tcp, я решил использовать настраиваемую привязку, потому что к службе обращаются разные клиенты в разных часовых поясах и, используя пользовательскую привязку, я могу установить разрешенное время перекоса часов на значения, отличные от по умолчанию один.WCF Пользовательская привязка - тайм-аут отправки всегда достигнут

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

<bindings> 
    <customBinding>   
    <binding name="pscNetBinding" openTimeout="00:10:00">   
     <reliableSession acknowledgementInterval="00:00:00.2000000" 
    flowControlEnabled="true" inactivityTimeout="23:59:59" 
    maxPendingChannels="128" maxRetryCount="8" maxTransferWindowSize="128" 
    ordered="true" /> 
     <compositeDuplex /> 
     <oneWay maxAcceptedChannels="128" packetRoutable="false"> 
     <channelPoolSettings idleTimeout="00:10:00" 
    leaseTimeout="00:10:00" maxOutboundChannelsPerEndpoint="10" /> 
     </oneWay> 
     <textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16" 
    messageVersion="Default" writeEncoding="utf-8"> 
     <readerQuotas maxDepth="2147483647" 
    maxStringContentLength="2147483647" maxArrayLength="2147483647" 
    maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
     </textMessageEncoding> 
     <httpTransport manualAddressing="false" 
    maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" 
    allowCookies="false" authenticationScheme="Anonymous" 
    bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
    keepAliveEnabled="true" maxBufferSize="2147483647" 
    proxyAuthenticationScheme="Anonymous" realm="" transferMode="Buffered" 
    unsafeConnectionNtlmAuthentication="false" useDefaultWebProxy="true"/> 
    </binding> 
    </customBinding> 
</bindings> 

<services> 
    <service name="SchneiderElectric.PSCNet.Server.Services.PSCNetWCFService" behaviorConfiguration="Behaviors1"> 
    <host> 
     <baseAddresses> 
     <add baseAddress ="http://10.155.18.18:2000/PSCNet"/> 
     </baseAddresses> 
    </host> 
    <endpoint address="" binding="customBinding" bindingConfiguration="pscNetBinding" 
           contract="SchneiderElectric.PSCNet.Server.Contracts.IPSCNetWCFService"/> 
    </service> 
</services>  
<behaviors> 
    <serviceBehaviors> 
    <behavior name="Behaviors1"> 
     <serviceMetadata httpGetEnabled = "true"/> 
     <!--<serviceThrottling maxConcurrentCalls="2048" maxConcurrentSessions="2048" maxConcurrentInstances="2048" /> 
     <dataContractSerializer maxItemsInObjectGraph="2147483647" />--> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 

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

<bindings> 
    <customBinding> 
     <binding name="pscNetBinding" openTimeout="00:10:00">    
     <reliableSession acknowledgementInterval="00:00:00.2000000" 
    flowControlEnabled="true" inactivityTimeout="23:59:59" 
    maxPendingChannels="128" maxRetryCount="8" maxTransferWindowSize="128" 
    ordered="true" /> 
     <compositeDuplex /> 
     <oneWay maxAcceptedChannels="128" packetRoutable="false"> 
      <channelPoolSettings idleTimeout="00:10:00" 
    leaseTimeout="00:10:00" maxOutboundChannelsPerEndpoint="10" /> 
     </oneWay> 
     <textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16" 
    messageVersion="Default" writeEncoding="utf-8" > 
      <readerQuotas maxDepth="2147483647" 
    maxStringContentLength="2147483647" maxArrayLength="2147483647" 
    maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
     </textMessageEncoding > 
     <httpTransport manualAddressing="false" 
    maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" 
    allowCookies="false" authenticationScheme="Anonymous" 
    bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
    keepAliveEnabled="true" maxBufferSize="2147483647" 
    proxyAuthenticationScheme="Anonymous" realm="" transferMode="Buffered" 
    unsafeConnectionNtlmAuthentication="false" useDefaultWebProxy="true" />      
     </binding> 
    </customBinding> 
    </bindings> 
    <client> 
    <endpoint address="http://10.155.18.18:2000/PSCNet" binding="customBinding" 
     bindingConfiguration="pscNetBinding" contract="PSCNetWCFService.IPSCNetWCFService" 
     name="pscNetBinding" /> 
    </client> 

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

Could not connect to http://10.155.18.198:9000/e60ba5b3-f979-4922-b9f8-c820caaa04c2 . TCP error code 10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 10.155.18.198:9000.

Может ли кто-нибудь из сообщества помочь мне в этом отношении?

ответ

1

Можете ли вы показать часть конфигурации, в которой вы определяете customBinding? Может быть, вы просто не вставить эту часть в, но при определении пользовательского связывания, вы должны указать кодировку и транспорт на минимум - что-то вроде этого:

<bindings> 
    <customBinding> 
     <binding name="MyCustomTextTcpBinding"> 
      <textMessageEncoding /> 
      <tcpTransport /> 
     </binding> 
    </customBinding> 
</bindings> 

Вы можете также вставить в той части, где вы определяете свою привязку «pscNetBinding »Configuration?

+0

Спасибо за ответ, я изменил привязку к привязке net.tcp, и все работает хорошо. Я планирую разместить его на услугах widnows. Как вы думаете, хорошо ли размещаться на службе Windows при условии, что моя служба используется только для авторизации входа и генерации Autocad в сервисе. – user67240

+0

Да, я бы подумал, что служба Windows будет в порядке. Если у вас IIS 6.0, вы все равно не можете размещать службу nettcp. В IIS 7 вы можете размещать nettcp с помощью WAS, но если бы это был я, я бы просто сделал сервис Windows. Вот хорошая статья: http://msdn.microsoft.com/en-us/library/ms730158.aspx –

+0

Спасибо за статью, я просто хотел быть уверенным в том, что то, что я делаю, является правильным путем размещения на службе Windows. Поскольку он развертывается на рабочем сервере, вы видите какой-либо недостаток в использовании службы Windows? – user67240

-1

Служба Windows - это, несомненно, хорошее решение, но я думаю, что лучше было бы сделать собственный хостинг , и у вас может быть anytype привязки к нему.