【发布时间】:2010-12-17 01:16:17
【问题描述】:
我有一个 WCF Web 服务,它可以与 http 地址完美配合,但从那时起我需要确保它可以通过 https 工作。
因为我使用的是 IIS 7,所以使用本指南 here 来启动和运行网站 https 绑定非常容易
我打开了一个浏览器,得到了通常的安全提示,但是在我添加了异常之后一切正常。
然后我决定安装证书,因为证书是本地主机,服务器和客户端是同一台机器 - 并让向导自动检测位置。
我回到我的 WCF CLIENT 代码,这是调用托管在 IIS(现在是 https)中的 Web 服务并在 2 个地方更改绑定的客户端。
- 端点地址改为https
- 将安全模式更改为传输
运行代码然后得到这个错误:
“无法为具有 'localhost' 权限的 SSL/TLS 安全通道建立信任关系。”
最后我回到 IIS 并在 SSL 设置下,将设置更改为接受客户端证书,并尝试检查是否需要检查,两次都产生相同的错误。
知道如何解决这个问题吗?
更新 问题 1 已修复 - 这是因为证书已颁发给 machine_name,而我在配置中使用 localhost。
现在这可行,我遇到了另一个问题:
https://[machine_name]/Downloads.svc 上没有可以接受消息的端点侦听。这通常是由不正确的地址或 SOAP 操作引起的。有关更多详细信息,请参阅 InnerException(如果存在)。”
Inner exception = "远程服务器返回错误:(404) Not Found。"
检查了 IIS 站点的 web.config,并将 DNS 绑定更改为 localhost。
这仍然很有趣,但根据微软的说法,这正是 WCF 应该好的原因,因为它将传输与编码逻辑分开,但到目前为止我必须告诉你,它看起来真的很复杂。
更新
关闭了windows防火墙,没有帮助...
这是我在 web.config 中的绑定
<basicHttpBinding>
<binding name="IncreasedTimeout"
closeTimeout="12:00:00" openTimeout="12:00:00"
receiveTimeout="12:00:00"
maxReceivedMessageSize="1000000"
sendTimeout="12:00:00">
<security>
<transport></transport>
</security>
</binding>
</basicHttpBinding>
【问题讨论】:
-
谢谢 :) 我也为此苦苦挣扎。您的问题 #1 解决方案正是我所需要的。
-
赞成修复问题 1... 我遇到了完全相同的问题!
-
赞成修复问题 #1!