为什么SSL /基本身份验证WCF服务会开始抛出404?

时间:2010-08-30 20:01:21

标签: wcf http-status-code-404

我有一个WCF服务,已经完美运行了3个月。它由托管WCF服务和本地网络客户端的同一服务器上的本地客户端使用。它使用SSL和基本身份验证来保证安全。

几天前,本地客户端(未受影响的本地网络客户端)在尝试使用该服务时开始收到404错误。我能够在托管WCF的服务器上打开浏览器并查看WSDL甚至调用“put”命令并获得预期的“不允许的方法”。我已确认没有对托管服务器进行任何软件或硬件更改。我已确认SSL密钥有效。我已确认应用程序池的权限已足够。我已确认没有防火墙正在运行。唯一奇怪的是IIS日志显示第一篇文章不包含基本身份验证用户。但是,日志中的下一行会显示200响应。我不完全确定日志不正常。见下文。我希望有人可以给我另一个地方去研究找到问题。请告诉我。

2010-08-28 10:30:03 192.168.100.100 POST /protected/Service_Name_Here.svc/put - 443 - 192.168.100.100 - 401 2 5 2
2010-08-28 10:30:03 192.168.100.100 POST /protected/Service_Name_Here.svc/put - 443 User_Name_Here 192.168.100.100 - 200 0 0 5

编辑:抛出错误的本地客户端正在将大文件传输到WCF服务。本地网络客户端正在传输小文件而不是抛出错误。我发现这个link表明默认的transferMode =“Buffered”将为20 MB以上的文件抛出404。这个人的修复方法是更改​​transferMode =“Streamed”。但是,“Streamed”设置仅允许将1个参数传递给WCF服务。我有多个参数,所以我需要找到“缓冲”模式的修复。

2 个答案:

答案 0 :(得分:0)

  

此人的修复方法是更改​​transferMode =“Streamed”。但是,“Streamed”设置仅允许将1个参数传递给WCF服务。我有多个参数,所以我需要找到“缓冲”模式的修复。

听起来这是正确的修复,但需要注意的是流模式需要自定义消息合同;您不能使用WCF作为操作的默认值推送的“RPC”样式。如果您需要在流式传输中提供多个参数,只需将它们添加到自定义消息合同中即可。

这是Microsoft的a nice discussion on the subject

答案 1 :(得分:0)

如果您在邮件大小方面遇到问题,请注意IIS的接受请求大小有3个级别:

如果WCF拒绝您的消息,您可能会意味着完全错误,但对于ASP.NET和IIS,您将获得完全HTTP 404。

除非您更改操作,否则Streaming不会帮助您。