You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于IIS托管的WCF服务TCP绑定及元数据交换故障排查求助

问题排查与修复步骤

1. 缺失IIS站点的Net.TCP绑定配置

这是IIS托管WCF TCP服务最容易忽略的核心步骤:

  • 打开IIS管理器,定位到你的WCF服务所在站点
  • 右键站点 → 编辑绑定 → 添加
  • 类型选择net.tcp,绑定信息设置为19099:*(端口对应你配置的19099,星号表示接受所有主机名)
  • 回到站点高级设置,在「启用的协议」中添加net.tcp(例如原协议是http,修改为http,net.tcp)

2. Web.Config中的BaseAddress在IIS托管场景下无效

IIS托管时,<baseAddresses>配置不会生效,服务实际地址由站点绑定决定。建议直接删除该节点,避免地址混淆:
修改后的<service>节点示例:

<service name="Company.Namespace.Service" behaviorConfiguration="ServiceBehavior">
    <endpoint name="ServiceEndpoint" address="" binding="netTcpBinding"
        bindingConfiguration="ServiceNetTcpBinding" contract="Company.Namespace.IService"/>
    <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/>
</service>

3. 元数据地址与站点绑定匹配问题

你尝试访问的元数据地址net.tcp://hostname:19099/Namespace/Company.Service.svc/mex需满足两个条件:

  • 站点已正确绑定net.tcp端口19099
  • hostname能被客户端正常解析(可临时替换为服务器IP测试,排除DNS解析问题)

4. 端口占用与权限检查

  • 执行命令 netstat -ano | findstr :19099 检查端口是否被其他进程占用,若占用需更换端口或停止占用进程
  • 确认Net.Tcp Listener Adapter服务运行正常,默认账户Local Service权限足够,若有特殊权限限制需调整

5. 完善元数据暴露配置

在服务行为中明确启用TCP元数据获取,确保mex端点正常工作:

<behavior name="ServiceBehavior">
    <serviceMetadata tcpGetEnabled="true" />
    <serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>

完成以上操作后重启IIS站点,再尝试添加服务引用。若仍失败,可查看Windows事件查看器中的WCF日志获取更详细错误信息。

内容的提问来源于stack exchange,提问作者Nanopixel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 02:54:23