首页 新闻 会员 周边

请教一个在IIS7中寄宿基于net.tcp绑定的WCF服务的问题

0
悬赏园豆:10 [已解决问题] 解决于 2014-08-11 11:32

各位大侠好, 我有一个基于net.tcp绑定的WCF服务需要部署,想部署到IIS7中.

我在部署的时候遇到了些问题.

我每一步都按照教程走, 但是在浏览器中浏http://localhost:4057/MessagePushService.svc时, 网页给出的元数据地址为

svcutil.exe http://aai4du1bs7mrn8b:4057/MessagePushService.svc?wsdl

(按照国人写的教程, 这里应该是net.tcp开头, 而不是http)

之后在添加服务引用中输入net.tcp://aai4du1bs7mrn8b:4502/MessagePushService.svc/mex, 在点前往. 就会报错, 错误是:

元数据包含无法解析的引用

 

 下面是配置文件,大神指导一下

<system.serviceModel>
<protocolMapping>
<add scheme="tcp" binding="netTcpBinding"/>
</protocolMapping>
<bindings>
<netTcpBinding>
<binding name="netTcpBindConfig" closeTimeout="00:30:00" portSharingEnabled="true" openTimeout="00:30:00" receiveTimeout="00:30:00" sendTimeout="00:30:00" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" listenBacklog="10">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
<reliableSession ordered="true" inactivityTimeout="00:01:00" enabled="false"/>
<security mode="None">
<transport clientCredentialType="Windows" protectionLevel="EncryptAndSign"/>
<message clientCredentialType="Windows"/>
</security>
</binding>
</netTcpBinding>
</bindings>
<services>
<service behaviorConfiguration="MessagePush.Service1Behavior" name="MessagePush.MessagePushService" >
<endpoint address="" binding="netTcpBinding" contract="MessagePush.IMessagePushService" bindingConfiguration="netTcpBindConfig"></endpoint>
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MessagePush.Service1Behavior">
<!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false 并删除上面的元数据终结点 -->
<serviceMetadata httpGetEnabled="true"/>
<!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>

wcf
慕容展云的主页 慕容展云 | 初学一级 | 园豆:122
提问于:2014-08-03 14:19
< >
分享
最佳答案
0

将httpGetEnabled改为false试试:

<serviceMetadata httpGetEnabled="false"/>
收获园豆:10
dudu | 高人七级 |园豆:31003 | 2014-08-03 14:45

还是会出现这个问题

元数据包含无法解析的引用:“net.tcp://aai4du1bs7mrn8b:4502/MessagePushService.svc/mex”。
无法连接到 net.tcp://aai4du1bs7mrn8b:4502/MessagePushService.svc/mex。连接尝试持续了 00:00:08.0104582 时间跨度。TCP 错误代码 10061: 由于目标计算机积极拒绝,无法连接。 [2001:0:9d38:90d7:1406:613:3f57:e69a]:4502。
由于目标计算机积极拒绝,无法连接。 [2001:0:9d38:90d7:1406:613:3f57:e69a]:4502
如果该服务已在当前解决方案中定义,请尝试生成该解决方案,然后再次添加服务引用。

慕容展云 | 园豆:122 (初学一级) | 2014-08-03 15:09

@慕容展云: telnet aai4du1bs7mrn8b 4502 能连上吗?

dudu | 园豆:31003 (高人七级) | 2014-08-03 15:11

@dudu: 正在连接aai4du1bs7mrn8b...无法打开到主机的连接。 在端口 4502: 连接失败

慕容展云 | 园豆:122 (初学一级) | 2014-08-03 15:19

@dudu: 这是什么原因?

慕容展云 | 园豆:122 (初学一级) | 2014-08-03 15:19

@慕容展云: 防火墙上允许4502端口了吗?

dudu | 园豆:31003 (高人七级) | 2014-08-03 15:27

@dudu: 我已经把防火墙都关闭了。应该不是防火墙的问题,我测试了其他端口,也是连接失败啊

慕容展云 | 园豆:122 (初学一级) | 2014-08-03 15:29

@慕容展云: ping aai4du1bs7mrn8b返回的IP地址正确吗?

dudu | 园豆:31003 (高人七级) | 2014-08-03 15:35

@dudu: 

正在 Ping AAI4DU1BS7MRN8B [fe80::7897:ee33:14e6:8bda%18] 具有 32 字节的数据:
来自 fe80::7897:ee33:14e6:8bda%18 的回复: 时间<1ms
来自 fe80::7897:ee33:14e6:8bda%18 的回复: 时间<1ms
来自 fe80::7897:ee33:14e6:8bda%18 的回复: 时间<1ms
来自 fe80::7897:ee33:14e6:8bda%18 的回复: 时间<1ms
 
fe80::7897:ee33:14e6:8bda%18 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 0ms,最长 = 0ms,平均 = 0ms
 
返回的是这信息
慕容展云 | 园豆:122 (初学一级) | 2014-08-03 15:37

@慕容展云: IIS添加了net.tcp绑定了吗?参考:WCF:如何将net.tcp协议寄宿到IIS

dudu | 园豆:31003 (高人七级) | 2014-08-03 15:49

@dudu: 这篇博客我看过了,我做的跟上面的一模一样,所有的步骤都重新走了一遍,还是不行,不知道怎么回事。

慕容展云 | 园豆:122 (初学一级) | 2014-08-03 15:51

@慕容展云: 重启一下IIS试试,如果IIS正常工作的话,telnet应该通的

dudu | 园豆:31003 (高人七级) | 2014-08-03 15:55

@dudu: 谢谢大哥您的回答,我已经解决问题了,是因为Net.Tcp Listener Adapter服务没有启动,启动之后就好了。您非常的热心,非常感谢!

慕容展云 | 园豆:122 (初学一级) | 2014-08-11 11:32
其他回答(1)
0

地址没配好。

当endpoint里使用相对地址<endpoint address=""的时候,需要配置一个决定地址。

<baseAddresses>
<add baseAddress="net.tcp://localhost:1111/Service1.svc"/>
<add baseAddress="http://localhost/Service1.svc"/>
</baseAddresses>
</host>

早起Abc | 园豆:279 (菜鸟二级) | 2014-08-10 11:09

谢谢您的回答,我已经解决问题了,是因为Net.Tcp Listener Adapter服务没有启动,启动之后就好了。再次感谢!

支持(0) 反对(0) 慕容展云 | 园豆:122 (初学一级) | 2014-08-11 11:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册