2010-12-23 18 views
0

我有一个文件代理IHttpHandler以确保身份验证和记录请求。它工作正常,在开发服务器上和IIS 6在IIS 7,我有两个问题:IIS 7中的文件代理处理程序

  1. 微软办公软件(Word,Excel文档...)将与OPTIONPROPFIND动词WebDAV请求。 ASP.NET因为不支持它们而引发异常。有没有办法在IIS级别禁用这些动词,以便它永远不会到达ASP.NET?我猜它会返回一个405 Method Not Allowed错误(http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#4xx_Client_Error)。

  2. IIS 7打开分块编码。在这种情况下,Content-Length标题无效,显然IIS 7将其删除:http://greenbytes.de/tech/webdav/rfc2616.html#rfc.section.4.4。但是,它也会删除Content-Type标题,导致文件在浏览器中显示为文本。那么,如何阻止IIS 7删除Content-Type,或者如何关闭此页面的分块编码?以下是您要比较的响应标题。

开发服务器响应:

HTTP/1.1 200 OK 
Server: ASP.NET Development Server/9.0.0.0 
Date: Thu, 23 Dec 2010 17:57:09 GMT 
X-AspNet-Version: 2.0.50727 
Content-Length: 68096 
Content-Disposition: inline; filename=test.doc 
Cache-Control: private 
Last-Modified: Thu, 23 Dec 2010 09:14:18 GMT 
Content-Type: application/msword 
Connection: Close 

IIS 7响应:

HTTP/1.1 200 OK 
Cache-Control: private 
Transfer-Encoding: chunked 
Last-Modified: Thu, 23 Dec 2010 09:30:31 GMT 
Server: Microsoft-IIS/7.5 
Content-Disposition: inline; filename=test.doc 
X-AspNet-Version: 2.0.50727 
X-Powered-By: ASP.NET 
Date: Thu, 23 Dec 2010 17:57:59 GMT 

回答

0

我在分块编码的问题是不准确的。我在我的开发机器上做了一个小改动:我添加了Content-Length。在开发机器上它没有什么区别 - 它一直工作。在IIS 7中,添加Content-Length实际上禁用了分块编码,并且所有内容都按预期工作。

对于WebDAV请求,IIS 7不会将它们发送到ASP.NET,所以我们没事。但是,开发服务器确实如此。我看到一个建议,添加DefaultHttpHandler来处理它们,但在开发服务器上,这意味着原始的aspx页面被提供。

+0

尝试```StaticFileHandler```而不是``DefaultHttpHandler``` – 2013-03-14 17:02:23