7
votes

Bibliothèque de services de WCF avec NettCpLinding

Je passe un moment difficile avec Netcpbinding.

Quand je courais mon wcfservice, je reçois ceci: p>

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.web>
    <compilation debug="true" />
  </system.web>
  <system.serviceModel>
    <bindings>
      <netTcpBinding>
        <binding name="tcpBinding" transferMode="Streamed" portSharingEnabled="false">
          <reliableSession enabled="true" />
          <security mode="None">
            <transport clientCredentialType="None" protectionLevel="None" />
            <message clientCredentialType="None" />
          </security>
        </binding>
      </netTcpBinding>
    </bindings>
    <services>
      <service behaviorConfiguration="WcfServiceLibrary1.Service1Behavior"
        name="WcfServiceLibrary1.Service1">
        <endpoint address="" binding="wsHttpBinding" contract="WcfServiceLibrary1.IService1">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <endpoint address="Service" binding="netTcpBinding" bindingConfiguration="tcpBinding"
          name="testTcp" contract="WcfServiceLibrary1.IService1" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8731/Design_Time_Addresses/WcfServiceLibrary1/Service1/" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="WcfServiceLibrary1.Service1Behavior">
          <serviceMetadata httpGetEnabled="True"/>
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>


4 commentaires

Pourriez-vous publier votre configuration WCF à partir de l'application / web.config?


Il ne s'agit pas de visible même si je le pose


Après l'avoir ajouté, appuyez sur la touche Code (pour indiquer chaque ligne 4 espaces et ne pas interpréter le XML)


J'ai eu ... merci ... merci ... n'a pas réalisé ce fait s'appliquait à XML :)


5 Réponses :


7
votes

Dans cette section

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


6 commentaires

Ajout que cela ne fonctionne pas. dit que le port est utilisé comme une erreur. Pourriez-vous compléter cette ligne pour moi s'il vous plaît? Merci


System.ServiceModel.AddressAlreadyUneSeException: The TransportManager n'a pas réussi à écouter l'URI fourni à l'aide du service NetTCPORTSHARD: Le service n'a pas pu écouter.


Assurez-vous d'utiliser un autre port (par exemple si HTTP est sur 8731, puis utilisez E.G. 8732: NET.TCP: // localhost: 8732 / YADDA / BLAH /)


Je ne peux pas utiliser plusieurs ports car je prévois de l'utiliser sur une application ASP.NET déployée. Je suis en train d'essayer net.tcp partage ... mais cela échoue aussi. J'ai demandé cette erreur sur une question séparée ici. Stackoverflow.com/Questtions/1297865/wcf-multiple-bindings


Je vois PortSharingenabled = False dans votre app.config. Cela dit, je ne sais pas si vous pouvez partager HTTP et TCP comme ça (ne vous rappelez pas).


S'il vous plaît voir ma réponse sur votre autre thread pour une réponse au numéro de partage de ports: Stackoverflow.com/questions/1297865/wcf -Multiple-Bindings



18
votes

Je suis sûr que vous avez maintenant corrigé le problème, mais ce n'est vraiment rien à voir avec les bassesAdresses, ce que toutes les cartes Bullentin vous mènent. J'ai trouvé la réponse à http: //social.msdn.microsoft.com/forums/en-us/wcf/thread/c9f8d99d-89ee-4573-8528-a21b047bad11 . En supposant que vous utilisez IIS 7.x: clic droit sur le répertoire virtuel / application dans IIS, sélectionnez Gérer les applications -> Paramètres avancés. Dans la section "Protocoles activées", add Net.TCP, E.G.: Http, net.tcp. Cela est nécessaire même si vous avez déjà ajouté ce protocole au niveau du site.


4 commentaires

Je vois que vous avez également un mode de sécurité défini sur Aucun dans vos liaisons, ce que j'ai commencé à utiliser au début, ce que je fais, j'ai besoin de connaître l'appelant authentifié. Je reçois normalement cela de fonctionnementContext.Current.ServicesecurityContext.Primydent ity.name ( moinsprivilge.com/... " a>). Donc, j'ai changé les liaisons sur le client et le serveur vers Windows, conformément à msdn.microsoft.com/en-us/library/ms733089.aspx (sécurité de transport avec authentification Windows).


Comment faire cela dans IIS6? Des idées?


Merci ... J'ai regardé ce fichier de configuration pendant environ 2 heures maintenant et je ne pouvais pas comprendre ce qui se passait ...


Oui oui oui, mille fois oui; J'ai oublié de faire cela et j'ai eu un mauvais moment à essayer de comprendre ce que je devais changer, car j'étais certain que je n'avais pas besoin de fournir une adresse de base.



1
votes
  1. Vérifiez que le service de partage de port Net.TCP est démarré sur la machine
  2. Vérifiez que la configuration NetCPPBinding PortSharingEnabled attribut est vraie. (Dans WCF4, vous n'avez pas besoin de fournir un nom sur l'élément de liaison si vous souhaitez que cette spécification de liaison soit la valeur par défaut pour net.TCP)

0 commentaires

2
votes

Configurez la liaison NET.TCP dans votre site IIS et définissez le protocole activé comme "http, net.tcp à l'aide de paramètres avancés". Il devrait fonctionner


0 commentaires

3
votes

Vous pouvez partager des ports, ce n'est pas trop difficile.

Assurez-vous que lors de la sélection des protocoles activés dans IIS (clic droit sur le site -> Gérer le site Web -> Paramètres avancés) Vous n'utilisez pas d'espaces. Si vous avez "http, net.tcp" au lieu de "http, net.tcp", il ne fonctionnera pas et vous donnera plutôt cette erreur exacte.

Plus d'informations ici: http://www.weeksofprogramming.com/post/could-not-find-a-base-address-check-for-spaces-in-iis7.aspx


0 commentaires