4

我有一个 .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.

4

1 回答 1

0

让 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

于 2012-06-26T02:32:10.120 回答