WCF不支持使用HTTP身份验证通过HTTP进行请求流式传输(也就是大型数据的流式上传)。我的第一个猜测是因为身份验证握手导致流请求被发送两次到服务器。但对于缓冲模式下的大量请求也是如此,因此没有意义。
您可以在自定义ASP.NET http处理程序中轻松实现使用HTTP身份验证的请求流。如果您可以控制客户端,您甚至可以通过显式HTTP HEAD预先验证服务器,然后重用持久连接来使用HTTP POST执行实际的流请求来避免“多个请求问题”。
那么有人可以想到WCF不支持这个的原因吗? (除了没有时间这样做)
由于
答案 0 :(得分:1)
原因是您必须首先发送整个请求(甚至是流式传输)以获取HTTP 401并遵循安全握手并最终再次发送整个请求。因为流媒体应该与非常大的消息一起使用,所以这个过程可能非常慢,并且会在网络上添加不需要的流量,因此MS可能会做出设计决定,根本不允许它。
在WCF中未实现HEAD请求的技巧。