2010-02-17 3 views
1

J'ai essayé pendant plus d'une semaine sans aucun succès, d'héberger le service wcf en utilisant netTcpBinding.IIS 7.0 utilisant netTcpBinding

Avec http, tout va bien. Mais avec des problèmes TCP se posent.

J'ai effectué toutes les étapes que je suis censé, afin d'accueillir mon service dans WAS:

.Net 3.0 Les fonctionnalités sont activées, y compris http et activation non http

. Dans IIS Manager/Manage Web Site/Advanced Settings, les protocoles http et net.tcp sont activés. -J'ajoute également net tcp à la liaison de site

Lorsque j'exécute le service Web, j'ai cette exception: Impossible de trouver une adresse de base correspondant au schéma net.tcp pour le point de terminaison avec liaison NetTcpBinding. Les schémas d'adresse de base enregistrés sont [http].

Voici ce que mon web.config ressemble à:

<services> 
     <service name="Services.Library.OrderService" BehaviorConfiguration="OrderServiceBehavior"> 
      <!-- Service Endpoints --> 
      <endpoint address="WSOrder.svc" 
         binding="netTcpBinding" 
         bindingConfiguration="netTcpStreaming" 
         name="NetTcpBindingEndpoint" 
         contract="Services.Interface.IOrderService" > 


       <identity> 
     <dns value="localhost" /> 
     </identity> 

      </endpoint> 

      <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/> 

      <host> 
       <baseAddresses> 
        <add baseAddress="net.tcp://localhost:808/" />     
       </baseAddresses> 
      </host> 


     </service> 
    </services> 

    <behaviors> 
     <serviceBehaviors> 
      <behavior name="OrderServiceBehavior"> 
       <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment --> 
       <serviceMetadata httpGetEnabled="false" /> 
       <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> 
       <serviceDebug includeExceptionDetailInFaults="false" /> 
       <dataContractSerializer maxItemsInObjectGraph="6553600" /> 
      </behavior> 
     </serviceBehaviors> 
    </behaviors> 

    <bindings> 
     <netTcpBinding> 
      <binding name="netTcpStreaming" 
        openTimeout="10:00:00" 
        closeTimeout="10:00:00" 
        receiveTimeout="10:00:00" 
        sendTimeout="10:00:00" 
        maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" > 

       <!-- this is for demo only. Https/Transport security is recommended --> 
       <security mode="None" /> 
      </binding> 
     </netTcpBinding> 

    </bindings> 

Pouvez-vous me dire s'il vous plaît ce qui ne va pas avec mon code?

Merci à l'avance

+0

Essayez http://serverfault.com/ – Ofir

+0

-1 pour pauvres titre et difficile à suivre la question. Je vais supprimer downvote si vous corrigez le titre (le rendre consultable, perdez le MiXeD CaSe NoISe WordZ) et si vous nettoyez la mise en forme pour qu'il soit plus facile de voir ce que vous demandez, quels résultats obtenez-vous, quels résultats VOULEZ obtenir, et ce que vous avez déjà fait. –

+3

Pour référence future, l'utilisation de phrases telles que "HELP PLEASE" ou "URGENT" permet aux gens de rejeter immédiatement votre question (parce qu'elle semble immature et gourmande). Croyez-le ou non, omettre de telles phrases pourrait vous donner des réponses plus rapides et meilleures. –

Répondre

0

C'est tout à fait une supposition mais vous pouvez essayer futzing avec ce code:

<baseAddresses> 
    <add baseAddress="net.tcp://localhost:808/" />     
</baseAddresses> 

Peut-être changer net.tcp-http

1

J'ai eu des problèmes similaires moi-même récemment, mais finalement réussi à faire fonctionner les choses.

Vous dites "Au gestionnaire IIS/Gérer le site Web/Paramètres avancés, les protocoles http et net.tcp sont activés. -J'ajoute également net tcp à la liaison de site". Ce paramètre doit également être défini manuellement au niveau sous-racine "racine virtuelle" s'il y en a un. Est-ce que cela fonctionne sous une racine virtuelle dans IIS? Si oui, vérifiez ce paramètre là.

Avez-vous également défini les liaisons sur le site Web niveau "modifier les liaisons"? Vous devrez ajouter une liaison net.tcp ici. Dans votre cas:

Type: net.tcp 
Binding Information: 808:* 

Si les deux échouent, retournez-les. Je vais garder un oeil :)

[Modifier en réponse à vos commentaires]

OK - j'ai regardé de plus près votre config et il ne semble pas juste pour moi. C'est la configuration côté serveur? [c.-à-d. pas pour un client appelant]

J'ai recréé une config, basée sur la vôtre, pour que vous puissiez l'expérimenter. [J'ai supprimé les trucs de mex - juste une reliure de tcp barebones]

Avez-vous utilisé l'éditeur de configuration de service WCF pour générer cette config, ou l'avez-vous fait à la main? Si à la main, ne pas - utilisez l'éditeur de configuration. Ça sauve des vies!

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.serviceModel> 
    <bindings> 
     <netTcpBinding> 
     <binding name="netTcpStreaming" closeTimeout="00:10:00" openTimeout="00:10:00" 
      sendTimeout="00:10:00" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" 
      maxReceivedMessageSize="2147483647"> 
      <security mode="None" /> 
     </binding> 
     </netTcpBinding> 
    </bindings> 
    <services> 
     <service name="Services.Library.OrderService"> 
     <endpoint address="net.tcp://localhost:808/" binding="netTcpBinding" 
      bindingConfiguration="netTcpStreaming" contract="Services.Interface.IOrderService" /> 
     <host> 
      <baseAddresses> 
      <add baseAddress="net.tcp://localhost:808/" /> 
      </baseAddresses> 
     </host> 
     </service> 
    </services> 
    </system.serviceModel> 
</configuration> 
+0

merci pour votre réponse; 1. il n'est pas sur un répertoire virtuel 2. J'ajoute déjà un net.tcp contraignant comme ci-dessous: Type: net.tcp Informations Reliure: 808: * :( – user275384

+0

je suis désolé mais je ne voir toute différence entre cette config et ma config, qu'avez-vous changé exactement? Je remarque qu'il n'y a pas d'adresse de base ni de point de terminaison mex dans votre config, qui sont recommandés infact, ceci est la configuration du serveur, generetad par l'éditeur de configuration d'abord, mais j'ai ajouté des informations concernant mon wcf à la main, comme nettcpbinding, endpoint, baseadress etc ... – user275384

+0

@ user275384: vous devez passer à "Quelque chose ne va pas et je ne sais pas quoi. écouter les gens qui m'aident. "mode. Vous devriez essayer l'une de ces liaisons et voir si cela fonctionne pour vous. PUIS commencer à ajouter. simple. J'ai probablement fini avec cette question. À la prochaine. –

1

Si vous voulez mex, vous devez définir un point de terminaison http, que vous l'utilisiez ou non.

laisser tomber le mex et votre service devrait fonctionner très bien.

ici est un travail contraignant net.tcp d'un de mes tests d'intégration .... comparer à ce que vous avez ..

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
<system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="MyServiceBehavior"> 
      <serviceDebug includeExceptionDetailInFaults="true"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <services> 
     <service name="WcfServiceLibrary1.Service"> 
     <endpoint address="service" binding="netTcpBinding" contract="WcfServiceShared.IService" name="TcpBinding" /> 
     <host> 
      <baseAddresses> 
      <add baseAddress="net.tcp://localhost:8000/ServiceHost/" /> 
      </baseAddresses> 
     </host> 
     </service> 
    </services> 
    </system.serviceModel> 
</configuration> 
+0

Je l'abandonne mais ça ne fonctionne pas – user275384

+0

@ user275384: avez-vous également laissé tomber l'élément serviceMetadata? et vous pourriez vouloir mieux formater le xml. C'est de bonnes manières. –

+0

ne voulais-tu pas celui-ci: je l'ai laissé tomber aussi, mais toujours le même problème – user275384

Questions connexes