开发环境:
服务托管在 IIS/WAS 下
我在本地开发中开发了四项服务。当我从 asp.net 应用程序访问它们时,它们都工作正常。我正在使用 net.tcp 协议进行连接。我已将 net.tcp 指定为站点级别和虚拟目录级别的允许协议。与 tcp 相关的三个服务全部启动。
在我能够连接到服务的应用程序 web.config 中,我正在使用模拟
但是当我尝试通过在 wcftestclient 的添加服务项目中指定 net.tcp url 来连接服务时。我无法连接。对另外两个服务使用相同的配置,我可以连接到另外两个服务。
测试服务器: 我什至部署在测试服务器上。即使在那里我也面临同样的问题。我可以使用 net.tcp url 连接到相同的两个服务。但其他两个给出错误。下面列出了其中一个配置。在服务器上,我什至删除了允许用户部分以使其对所有用户运行。
我得到的错误如下。
错误:无法从 net.tcp://localhost/servicesdev/SalesPersonService.svc 获取元数据 如果这是您有权访问的 Windows (R) Communication Foundation 服务,请检查您是否已在指定地址启用元数据发布。有关启用元数据发布的帮助,请参阅位于http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata的 MSDN 文档Exchange 错误 URI:net.tcp://localhost/servicesdev/SalesPersonService.svc 元数据包含无法解析的引用:“net.tcp://localhost/servicesdev/SalesPersonService.svc”。套接字连接被中止。这可能是由于处理您的消息时出错或远程主机超出接收超时,或者是潜在的网络资源问题造成的。本地套接字超时为“00:05:00”。现有连接被远程主机强行关闭
以下是配置部分。
<services>
<service behaviorConfiguration="ServiceBehavior" name="WCFServiceLibrary.SalesPersonService">
<endpoint address="" binding="wsHttpBinding" contract="WCFServiceLibrary.ISalesPersonService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
<endpoint address="basic" binding="basicHttpBinding" contract="WCFServiceLibrary.ISalesPersonService" />
<endpoint address="net.tcp://localhost/servicesdev/SalesPersonService.svc" binding="netTcpBinding" contract="WCFServiceLibrary.ISalesPersonService" listenUriMode="Explicit" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<system.web>
<compilation targetFramework="4.0" debug="true" />
<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID" />
<identity impersonate="true" />
<authorization>
<allow users="myuser" />
</authorization>
</system.web>
谢谢, BMP