2009-02-17 11 views
1

J'ai un service wcf qui doit implémenter des rappels et être hébergé sur IIS 6.0. Étant donné qu'IIS 6.0 ne prend pas en charge la liaison net.tcp, j'ai décidé d'utiliser une liaison personnalisée car le service est accessible par différents clients dans différents fuseaux horaires et, en utilisant la liaison personnalisée, je peux définir l'heure d'inclinaison de l'horloge celui par défaut.Lien WCF personnalisé - délai d'envoi toujours atteint

Voici mon fichier de configuration du serveur:

<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> 

fichier de configuration du client:

<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> 

Si j'utilise le serveur et le client sur la même machine, tout fonctionne très bien. Si je les exécute sur des machines différentes, j'obtiens l'erreur suivante:

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.

Est-ce que quelqu'un dans la communauté peut m'aider à cet égard?

Répondre

1

Pouvez-vous montrer la partie de la configuration dans laquelle vous définissez customBinding? Peut-être vous ne l'avez pas juste coller cette partie, mais lorsque vous définissez un vous devez spécifier la liaison personnalisée, un codage et un minimum de transport au - quelque chose comme ceci:

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

Pouvez-vous coller aussi dans la partie où vous définissez votre liaisonConfiguration "pscNetBinding"?

+0

Merci pour la réponse que j'avais changé ma liaison à la liaison net.tcp et tout fonctionne bien. Je prévois de l'héberger sur le service widnows. Pensez-vous qu'il est bon d'héberger sur le service de Windows à condition que mon service est seulement utilisé pour la validation de connexion et la génération Autocad au service. – user67240

+0

Oui, je pense qu'un service Windows serait bien. Si vous avez IIS 6.0, vous ne pouvez pas vraiment héberger un service nettcp de toute façon. Dans IIS 7, vous pouvez héberger nettcp en utilisant WAS, mais si c'était moi, je ferais un service Windows. Voici un bon article: http://msdn.microsoft.com/en-us/library/ms730158.aspx –

+0

Merci pour l'article, je voulais juste être sûr que ce que je fais est juste en hébergeant sur le service Windows. Comme il est déployé dans le serveur de production, voyez-vous un inconvénient à utiliser le service Windows? – user67240

-1

Windows service est sans doute une bonne solution, mais je pense que mieux serait un hébergement de soi et vous pourriez avoir anytype de liaison sur elle.