Nul*_*ius 6 .net c# wcf wcf-binding nettcpbinding
这真的让我困扰了几个小时.我使用TCP绑定创建了最简单的WCF服务.
namespace WcfTcpService
{
public class TestTcpService : ITestTcpService
{
public string Hello(string name)
{
return "Hello, " + name + "!";
}
}
}
namespace WcfTcpService
{
[ServiceContract]
public interface ITestTcpService
{
[OperationContract]
string Hello(string name);
}
}
Run Code Online (Sandbox Code Playgroud)
Web.config文件包含以下部分:
<system.serviceModel>
<services>
<service name="WcfTcpService.TestTcpService" behaviorConfiguration="TestServiceBehavior">
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:808/WcfTcpService.TestTcpService" />
</baseAddresses>
</host>
<endpoint address="" binding="netTcpBinding" bindingConfiguration="tcpBinding" contract="WcfTcpService.ITestTcpService"></endpoint>
<endpoint address="mex" binding="mexTcpBinding" bindingConfiguration="" contract="IMetadataExchange"></endpoint>
</service>
</services>
<bindings>
<netTcpBinding>
<binding name="tcpBinding" portSharingEnabled="true">
<security mode="None"></security>
</binding>
</netTcpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="TestServiceBehavior">
<!-- To avoid disclosing metadata information, set the values below to false before deployment -->
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<!-- 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"/>
</behavior>
</serviceBehaviors>
</behaviors>
<!--<protocolMapping>
<add binding="basicHttpsBinding" scheme="https" />
<add binding="netTcpBinding" scheme="net.tcp" />
</protocolMapping>-->
<!--<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />-->
</system.serviceModel>
Run Code Online (Sandbox Code Playgroud)
此服务托管在IIS中:

现在,当尝试net.tcp://localhost:808/WcfTcpService.TestTcpService从客户端应用程序添加引用时,我一直收到错误:
The URI prefix is not recognized.
Metadata contains a reference that cannot be resolved: 'net.tcp://localhost/WcfTcpService.TestTcpService'.
The message could not be dispatched because the service at the endpoint address 'net.tcp://localhost/WcfTcpService.TestTcpService' is unavailable for the protocol of the address.
If the service is defined in the current solution, try building the solution and adding the service reference again.
Run Code Online (Sandbox Code Playgroud)
net.tcp服务正在运行,我收到与WcfTestClient.exe相同的错误.我可以成功地跑步http://localhost/WcfTcpService/TestTcpService.svc.
我搜索谷歌但没有出现.
谢谢!
编辑:
"默认网站"的绑定屏幕看起来像这样顺便说一下:

当您创建使用netTcpBinding的服务并且要在Visual Studio中添加服务引用时,您应该使用http地址(httpGetEnabled)而不是服务侦听的实际tcp地址.所以解决方案是在添加服务引用对话框中将localhost/WcfTcpService/TestTcpService.svc设置为url.