我有一个.ASHX处理程序我想用来处理HTTP PUT以允许我将文件上传到Web服务器 - .ASHX文件实际上传了数据并将文件粘贴到其他地方,因此它实际上从未触及过磁盘在这里。
我已经设置了web.config以允许它处理HTTP PUT,但IIS不会将请求传递给我的代码,除非我将.ASHX文件本身的ACL设置为可写 - 这有点傻因为我们实际上不打算写这些文件。
如果我设置ACL,它工作正常,但我希望能够处理文件而不必设置ACL(我确信有一种合适的方法可以使IIS只通过HTTP PUT到.ASHX文件而不检查文件本身的权限。
这是在Win2008 R2上(实际上,它在Azure的2008 R2上,但应该是相同的),使用.NET 4.0
401 - Unauthorized: Access is denied due to invalid credentials.
You do not have permission to view this directory or page using the credentials that you supplied.
答案 0 :(得分:0)
让PUT(和DELETE)与ASP.NET一起工作有几个障碍。既然你提到了Win2008 R2(IIS 7.5),我会检查你看到的错误是否提到了WebDAV模块或处理程序。
自IIS 7.5起,默认情况下启用WebDAV。它将干扰ASP.NET处理程序和模块上的HTTP PUT和DELETE谓词。如果您正在实施RESTful服务,则可能甚至不使用此功能。通过web.config禁用它。
<system.webServer>
<modules>
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV" />
</handlers>
</system.webServer>
此论坛帖子中提到了一些名为HTTP Error 405 With ASP.Net MVC and HTTP PUT on IIS 7.5的其他解决方案。