我有一个 .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.
最佳答案
让 PUT(和 DELETE)与 ASP.NET 一起工作有几个障碍。既然你提到了 Win2008 R2 (IIS 7.5),我会检查你看到的错误是否提到了 WebDAV 模块或处理程序。
WebDAV 从 IIS 7.5 开始默认启用。它将干扰 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 的论坛帖子中提到了其他一些解决方案。 .
关于asp.net - 从 ASP.NET 中的 .ashx 处理程序服务 HTTP PUT 而无需调整文件权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11198478/