35 Stimmen

Es konnte keine Basisadresse gefunden werden, die dem Schema net.tcp entspricht

Ich habe meinen Dateiübertragungsdienst von basicHttpBinding zu netTcpBinding verschoben verschoben, da ich versuche, einen Kanal im Duplex-Modus einzurichten. Ich habe auch meinen net.tcp Dienst zur gemeinsamen Nutzung des Ports gestartet.

Ich bin derzeit in der Entwicklung und bin Selbst-Hosting auf einem xp-Box, bis wir die Verschiebung der Anwendung auf einen Entwicklungsserver verschieben. Daher habe ich im Moment keinen Zugriff auf IIS.

Nachdem ich meinen Dienst als solchen konfiguriert habe:

<service behaviorConfiguration="transferServiceBehavior" name="API.FileTransfer.FileTransferService">
        <endpoint name="MyFileTransferEP"
                  address  = ""
                  binding  = "netTcpBinding"
                  bindingConfiguration="MyFileTransferNetTcpEP"
                  behaviorConfiguration="NetTcpEPBehavior"
                  contract="API.FileTransfer.IFileTransferService" />
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://localhost:8001/project/filetransfer.svc" />
          </baseAddresses>
        </host>
</service>

Und, meine Bindung als solche:

<netTcpBinding>
        <binding name="MyFileTransferNetTcpEP"
                 hostNameComparisonMode="StrongWildcard"
                 closeTimeout="00:01:00"
                 openTimeout="00:01:00" 
                 receiveTimeout="00:10:00" 
                 sendTimeout="00:01:00"
                 maxReceivedMessageSize="2147483647"
                 transferMode="Streamed"
                 portSharingEnabled="true">
          <security mode="None">
            <transport clientCredentialType="None" />
            <message clientCredentialType="None" />
          </security>
        </binding>
</netTcpBinding>

Ich erhalte die folgende Fehlermeldung, wenn ich mit der rechten Maustaste auf die SVC-Datei zugreife:

Konnte keine Basisadresse finden mit dem Schema net.tcp für die Endpunkt mit der Bindung NetTcpBinding. Registrierte Basisadressschemata sind [http].

Die Online-Lektüre legt nahe, dass zur Behebung dieses Problems i die net.tcp-Bindung zur Bindung der Anwendung im IIS hinzuzufügen im IIS hinzufügen. Aber was muss ich tun, wenn ich selbst ein Hosting betreibe und keinen Zugang zu IIS HABE? Übrigens, wenn Sie dies lesen und über IIS verfügen, gehen Sie wie folgt vor: Klicken Sie mit der rechten Maustaste auf das virtuelle Verzeichnis/die Anwendung im IIS -> Anwendung verwalten -> Erweiterte Einstellungen. Und fügen Sie in der Rubrik Aktivierte Protokolle net.tcp hinzu.

Irgendwelche Ideen?


UPDATE: Ich dachte, ich hätte es geschafft, aber es funktioniert immer noch nicht. Hier ist, was ich jetzt habe: Ich erhalte immer noch die Fehlermeldung "could not find base address that matches scheme net.tcp". Ich habe alle meine Basisadressen geändert, um Ihren Vorschlag zu berücksichtigen. So sieht es jetzt aus:

<service behaviorConfiguration="transferServiceBehavior" name="API.FileTransfer.FileTransferService">
            <endpoint name="MyJSONFileTransferEP"
                      address="json"
                      binding="webHttpBinding"
                      bindingConfiguration="jsonWeb"
                      behaviorConfiguration="WebHttpEPBehavior"
                      contract="API.FileTransfer.IJSONFileTransferService" />
            <endpoint name="MyPOXFileTransferEP"
                      address="pox"
                      behaviorConfiguration="WebHttpEPBehavior"
                      binding="webHttpBinding"
                      bindingConfiguration="poxWeb"
                      contract="API.FileTransfer.IPOXFileTransferService" />
            <endpoint name="MySOAPFileTransferEP"
                      address="filetransfer"
                      binding="netTcpBinding"
                      bindingConfiguration="netTcpWeb"
                      behaviorConfiguration="NetTcpEPBehavior"
                      contract="API.FileTransfer.ISOAPFileTransferService" />
            <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/>
            <host>
              <baseAddresses>
                <add baseAddress="net.tcp://localhost:2544/filetransfer/" />
              </baseAddresses>
            </host>
          </service>

Ich habe dies sowohl mit "net.tcp://localhost:2544" als auch mit "net.tcp://localhost:8001" versucht. Muss ich in meinen Firewall-Einstellungen etwas hinzufügen (zulassen)? Irgendwelche anderen Vorschläge?

Hier ist mein filetransferservice's mexTcpBinding in meiner App.config Datei:

<endpoint address="net.tcp://localhost:2544/filetransfer/mex"
        binding="mexTcpBinding" bindingConfiguration="" contract="IMetadataExchange"
        name="filetransfermex">
        <identity>
          <certificateReference storeName="My" storeLocation="LocalMachine"
            x509FindType="FindBySubjectDistinguishedName" />
        </identity>
      </endpoint>

Ich bin immer noch nicht in der Lage, meinen FileTransferServiceClient in meiner Webanwendung zu referenzieren.

Nochmals vielen Dank.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X