asp.net - 从 ASP.NET 中的 .ashx 处理程序服务 HTTP PUT 而无需调整文件权限

标签 asp.net ashx http-put

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

相关文章:

asp.net-mvc - 什么时候应该在ASP.NET MVC应用程序中使用HttpDelete或HttpPut

php - 如何使用 PEAR PHP Http_Request2 库在 PUT 方法中发送数据

c# - 通过单击 asp.net 中的按钮在网格中添加多行

c# - 在 ASP.NET 中创建唯一的 URL

c# - Windows 10 家庭版/专业版/企业版 IIS 的并发请求限制

.net - 如何让 ASP.NET 输出 UTF-16 编码的文本?

c# - 当请求 xml 页面时提供 ashx 页面

c# - 如何重定向所有错误,包括 404

jquery - 将多个参数从 jQuery 传递到 ASSX

javascript - 将 HTML/Express.js 设置从 POST 更改为 PUT?