WCF Service Library mit NetTcpBinding
Ich bin eine harte Zeit mit NetTcpBinding.
Wenn ich meine WCFservice,bekomme ich diese:
System.InvalidOperationException: Could not find a base address that matches scheme net.tcp for the endpoint with binding NetTcpBinding. Registered base address schemes are [http].
at System.ServiceModel.ServiceHostBase.MakeAbsoluteUri(Uri relativeOrAbsoluteUri, Binding binding, UriSchemeKeyedCollection baseAddresses)
at System.ServiceModel.Description.ConfigLoader.LoadServiceDescription(ServiceHostBase host, ServiceDescription description, ServiceElement serviceElement, Action`1 addBaseAddress)
at System.ServiceModel.ServiceHostBase.LoadConfigurationSectionInternal(ConfigLoader configLoader, ServiceDescription description, ServiceElement serviceSection)
at System.ServiceModel.ServiceHostBase.LoadConfigurationSectionInternal(ConfigLoader configLoader, ServiceDescription description, String configurationName)
at System.ServiceModel.ServiceHostBase.ApplyConfiguration()
at System.ServiceModel.ServiceHostBase.InitializeDescription(UriSchemeKeyedCollection baseAddresses)
at System.ServiceModel.ServiceHost.InitializeDescription(Type serviceType, UriSchemeKeyedCollection baseAddresses)
at System.ServiceModel.ServiceHost..ctor(Type serviceType, Uri[] baseAddresses)
at Microsoft.Tools.SvcHost.ServiceHostHelper.CreateServiceHost(Type type, ServiceKind kind)
at Microsoft.Tools.SvcHost.ServiceHostHelper.OpenService(ServiceInfo info)
Ich bin immer hier wenn ich die Anwendung ausführen standardmäßig mit WCFSvcHost.
Es gibt keinen extra code.Nur der Standard-code für jede neue wcf-Dienst.
Alles, was ich wollte, zu tun war, ändern Sie die Bindung zu tcp.
Wie löse ich dieses problem?
Edit: Hier ist mein WCF-App.config
<?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>
- Könnte Sie posten Sie Ihre WCF-Konfiguration aus der app/web.config?
- Es ist nicht immer sichtbar, selbst wenn ich es poste
- nach dem hinzufügen, drücken Sie die code-Taste (zum Gedankenstrich jede Zeile 4 Leerzeichen und nicht zu interpretieren der xml-Datei)
- Ich der festen format.
- hab ihn....vielen Dank...wusste nicht, diese Tatsache angewandt, für das XML 🙂
- Vor allem, XML/HTML.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In diesem Abschnitt
hinzufügen einer Netz.tcp://Basisadresse.
Ich bin sicher, inzwischen haben Sie das Problem behoben wurde, aber es ist wirklich nichts zu tun mit baseAddresses das ist, was alle bullentin Brettern führen Sie zu. Ich fand die Antwort auf http://social.msdn.microsoft.com/forums/en-US/wcf/thread/c9f8d99d-89ee-4573-8528-a21b047bad11. Vorausgesetzt, Sie sind mit IIS 7.x: rechten Maustaste auf das virtuelle Verzeichnis/Anwendung im IIS wählen Sie " Anwendung Verwalten -> Erweiterte Einstellungen. In die "Aktivierte Protokolle" Abschnitt hinzufügen net.tcp, z.B.: http,net.tcp. Dies ist auch erforderlich, wenn Sie dieses Protokoll bereits auf der Ebene der site.
Können Sie ports freigeben, es ist nicht allzu schwer.
Achten Sie bei der Auswahl der aktivierten Protokolle in IIS (Rechtsklick auf Seite -> Verwaltung von Web-Site -> Erweiterte Einstellungen), dass Sie KEINE LEERZEICHEN VERWENDEN. Wenn Sie "http, net.tcp" statt "http", net.tcp" es wird nicht funktionieren, und stattdessen geben Sie diese genauen Fehler.
Mehr Informationen hier: http://www.weeksofprogramming.com/post/Could-not-find-a-base-address-Check-for-spaces-in-IIS7.aspx
Konfigurieren net.tcp-Bindung an den IIS-site und aktiviert das Protokoll als "http", net.tcp über erweiterte Einstellung".Sollte es funktionieren