C# HttpHandler 接受 PUT 请求上传内容

Posted

技术标签:

【中文标题】C# HttpHandler 接受 PUT 请求上传内容【英文标题】:C# HttpHandler to accept PUT requests to upload content 【发布时间】:2011-01-07 18:44:32 【问题描述】:

我编写了一个 HTTPHandler(在 C# 中)来接受 GET 和 PUT 请求,基本上允许远程客户端检索和更新资源。

处理程序在我的开发机器上本地运行良好,但是我在服务器上运行它时遇到问题。

Web 服务器服务器是 IIS6(在 W2K3 服务器盒上运行)。

我已将 NTFS 配置为允许 ASPNET 用户写入网站下的特定区域,因此 ASP.NET 不应该遇到文件安全问题。 我检查了我的 Web.config,我添加了两个动词“GET,PUT”。

但是来自 PUT 请求的响应始终是 403 Forbbiden。

HTTP/1.1 403 Forbidden
Via: 1.1 WMEPROXY
Connection: Keep-Alive
Proxy-Connection: Keep-Alive
Content-Length: 213
Date: Thu, 21 Jan 2010 14:47:30 GMT
Content-Type: text/html
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET

<html><head><title>Error</title></head><body><head><title>Execute Access Denied</title></head>
<body><h1>Execute Access Denied</h1>This Virtual Directory does not allow objects to be executed.</body></body></html>

有什么我错过的想法吗?

【问题讨论】:

【参考方案1】:

您需要在 IIS 中将 PUT 动词添加到 ashx 扩展:

(来源:15seconds.com)

【讨论】:

是的,我在重新检查配置时发现了它。谢谢。 PS 任何安全原因微软不会默认启用 PUT? PUT 请求通常用于修改服务器上的文件,所以我认为出于安全原因,它们默认是禁用的。

以上是关于C# HttpHandler 接受 PUT 请求上传内容的主要内容,如果未能解决你的问题,请参考以下文章

python使用httpHandler处理请求案例

python使用httpHandler处理请求案例

注册URL模式与HttpHandler的映射关系

002-一般处理程序(HttpHandler)

httphandler设置自定义请求头

转:HttpModule与HttpHandler详解