我有一个艰难的时间与NetTcpBinding的。
当我跑我的WCFservice,我得到这样的:
System.InvalidOperationException:找不到与绑定NetTcpBinding的端点符合计划的net.tcp的基址。已注册的基址方案是[HTTP]。
在System.ServiceModel.ServiceHostBase.MakeAbsoluteUri(URI relativeOrAbsoluteUri,约束力181,UriSchemeKeyedCollection baseAddresses)
在System.ServiceModel.Description.ConfigLoader.LoadServiceDescription(ServiceHostBase主机,ServiceDescription描述,ServiceElement serviceElement,Action`1 addBaseAddress)
在System.ServiceModel.ServiceHostBase.LoadConfigurationSectionInternal(ConfigLoader configLoader,ServiceDescription描述,ServiceElement serviceSection)
在System.ServiceModel.ServiceHostBase.LoadConfigurationSectionInternal(ConfigLoader configLoader,ServiceDescription描述,字符串configurationName)
在System.ServiceModel.ServiceHostBase.ApplyConfiguration()
在System.ServiceModel.ServiceHostBase.InitializeDescription(UriSchemeKeyedCollection baseAddresses)
在System.ServiceModel.ServiceHost.InitializeDescription(类型的serviceType,UriSchemeKeyedCollection baseAddresses)
在System.ServiceModel.ServiceHost..ctor(类型的serviceType,乌里[] baseAddresses)
在Microsoft.Tools.SvcHost.ServiceHostHelper.CreateServiceHost(类型类型,ServiceKind的那种)
在Microsoft.Tools.SvcHost.ServiceHostHelper.OpenService(ServiceInfo信息)
我得到这个,当我使用WCFSvcHost默认运行应用程序。 有c.Just任何新的WCF服务的默认code无额外的$ C $。 所有我想做的事是更改绑定到TCP。
我该如何解决这个问题?
编辑:这是我的WCF的App.config中
< XML版本=1.0编码=UTF-8&GT?;
<结构>
<的System.Web>
<编译调试=真/>
< /system.web>
< system.serviceModel>
<绑定>
< NetTcpBinding的>
<绑定名称=tcpBindingtransferMode =流媒体portSharingEnabled =假>
<启用的ReliableSession =真/>
<安全模式=无>
<交通运输clientCredentialType =无的ProtectionLevel =无/>
<消息clientCredentialType =无/>
< /安全>
< /装订>
< / NetTcpBinding的>
< /绑定>
<服务>
<服务behaviorConfiguration =WcfServiceLibrary1.Service1Behavior
NAME =WcfServiceLibrary1.Service1>
<端点地址=绑定=的wsHttpBinding合同=WcfServiceLibrary1.IService1>
<身份>
< DNS值=本地主机/>
< /身分>
< /端点>
<端点地址=MEX绑定=mexHttpBinding合同=IMetadataExchange接口/>
<端点地址=服务绑定=NetTcpBinding的bindingConfiguration =tcpBinding
NAME =testTcp合同=WcfServiceLibrary1.IService1/>
<主机>
< baseAddresses>
<新增baseAddress =HTTP://本地主机:8731 / Design_Time_Addresses / WcfServiceLibrary1 /服务1 //>
< / baseAddresses>
< /主机>
< /服务>
< /服务>
<行为>
< serviceBehaviors>
<行为NAME =WcfServiceLibrary1.Service1Behavior>
< serviceMetadata httpGetEnabled =真/>
< serviceDebug includeExceptionDetailInFaults =FALSE/>
< /行为>
< / serviceBehaviors>
< /行为>
< /system.serviceModel>
< /结构>
解决方案
在本节
<主机>
< baseAddresses>
<新增baseAddress =HTTP://本地主机:8731 /...//>
< / baseAddresses>
< /主机>
添加的net.tcp://基址
<主机>
< baseAddresses>
<新增baseAddress =HTTP://本地主机:8732 //>
<新增baseAddress =的net.tcp:// localhost的/>
< / baseAddresses>
< /主机>
I'm having a tough time with NetTcpBinding.
When I run my WCFservice,I get this:
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)
I'm getting this when I run the application by default using WCFSvcHost. There's no extra code.Just the default code of any new wcf service. All I wanted to do was change the binding to tcp.
How do I solve this problem?
Edit: Here's my WCF's 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>
解决方案
In this section
<host>
<baseAddresses>
<add baseAddress="http://localhost:8731/.../" />
</baseAddresses>
</host>
add a net.tcp:// base address.
<host>
<baseAddresses>
<add baseAddress="http://localhost:8732/" />
<add baseAddress="net.tcp://localhost"/>
</baseAddresses>
</host>