1

我有一个在 Microsoft Forefront/TMG 后面运行的 WCF 服务。该服务位于使用端口 80 的 IIS 上。TMG 侦听端口 443。TMG 安装了 SSL 证书。TMG 设置由我们的 IT 部门完成。我能够访问https://mypublicsite:443/myservice.svchttps://mypublicsite:443/myservice.svc?wsdl. 但是,如果使用 Visual Studio 测试客户端:WCFTestClient.exe(或任何客户端) - 在执行此错误的调​​用时出现超时:

调用服务失败。可能原因:服务离线或无法访问;客户端配置与代理不匹配;现有代理无效。有关更多详细信息,请参阅堆栈跟踪。您可以尝试通过启动新代理、恢复到默认配置或刷新服务来恢复。

我现在卡住了。http://myinternalsite:80/myservice.svc从网络内部访问服务时,一切正常。任何有解决方案的人?或者找到解决办法的方法?

4

3 回答 3

0

它可能是:

  • 您被防火墙阻止(尝试 telnet)
  • TMG 设置有问题(尝试从浏览器访问服务 wsdl)
  • 您的 wcf 配置设置为使用/不使用传输安全性(检查服务器和客户端配置文件是否匹配)
于 2012-05-23T13:46:33.310 回答
0

找到了解决方案。让 fiddler2显示网络包的内容。这引导我找到解决方案。500 响应的原因是由于 WCF AddressFilter 不匹配。通过将其添加到我的服务中已解决此问题:[ServiceBehavior(AddressFilterMode=AddressFilterMode.Any)]

这是帮助我的文章: http: //social.msdn.microsoft.com/Forums/en-US/wcf/thread/b5ae495b-f5fb-4eed-ae21-2b2280d4fec3/

于 2012-05-24T12:10:45.840 回答
0

当我在服务发送的枚举上没有零值时,我收到了这个错误。如果使用枚举,请确保定义了发送的值。默认为 0

[DataContract]
public enum MyEnum // No name for value 0 in this enum
{
    [EnumMember]
    Something1=1,
    [EnumMember]
    Something2=2,   
}
于 2013-01-21T22:55:04.097 回答