ASP.NET Web API - 不允许使用 PUT 和 DELETE 动词 - IIS 8

2023-12-03

我最近从 Visual Studio 2010 升级到 Visual Studio 2012 RC。安装程序还会安装 IIS 8 Express,Visual Studio 现在将其用作默认 Web 服务器。

IIS 8 阻止我使用 PUT 和 DELETE 动词的 WEB API 请求。 IIS 返回 405 错误,The requested resource does not support http method 'PUT'.

我知道人们过去对此有过疑问,并且 Stack Overflow 上有几条关于它的消息。对于 IIS 7 Express,解决方案是卸载 WebDav。不幸的是,我没有看到任何方法可以使用 IIS 8 做到这一点。

我尝试从 applicationhost.config 中编辑 WebDav 部分,但这没有帮助。例如我删除了<add name="WebDAVModule" image="%IIS_BIN%\webdav.dll" />从配置文件。

我在这件事上花了太长时间。必须有一个简单的方法来启用 PUT 和 DELETE 吗?


好的。我终于弄清楚了这件事的真相。您需要跳过一些步骤才能使 PUT 和 DELETE 动词在 IIS8 中正常工作。事实上,如果您安装 VS 2012 的候选版本并创建一个新的 WEB API 项目,您会发现示例 PUT 和 DELETE 方法立即返回 404 错误。

要通过 Web API 使用 PUT 和 DELETE 动词,您需要编辑 %userprofile%\documents\iisexpress\config\applicationhost.config 并将动词添加到 ExtensionlessUrl 处理程序,如下所示:

更改这一行:

<add name="ExtensionlessUrl-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

to:

<add name="ExtensionlessUrl-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

除了上述内容之外,您还应该确保 WebDAV 不会干扰您的请求。这可以通过注释掉 applicationhost.config 中的以下行来完成。

<add name="WebDAVModule" image="%IIS_BIN%\webdav.dll" />
<add name="WebDAVModule" /> 
<add name="WebDAV" path="*" verb="PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK" modules="WebDAVModule" resourceType="Unspecified" requireAccess="None" />

另请注意,默认的 Web API 约定是您的方法名称应与调用的 HTTP 动词相同。例如,如果您要发送 HTTP 删除请求,则默认情况下您的方法应命名为“Delete”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET Web API - 不允许使用 PUT 和 DELETE 动词 - IIS 8 的相关文章

  • 如何在 asp.net C# 4.0 中调用异步方法?

    我知道 net 4 5 中有await async 关键字 可以轻松调用异步方法 我目前正在研究如何在 C 4 0 中进行异步调用 我想要的一个例子是在数据网格正在进行数据绑定的情况下进行异步调用 如果您能为我提供一些链接 我将非常感激 看
  • 如何让 HttpClient 将凭据与请求一起传递?

    我有一个与 Windows 服务通信的 Web 应用程序 托管在 IIS 中 Windows 服务使用 ASP Net MVC Web API 自托管 因此可以使用 JSON 通过 http 进行通信 Web 应用程序被配置为进行模拟 其想
  • 动态选择和更新 LINQ 结果集中的列值

    我有一个场景 其中存在 LINQ 结果集 我使用了以下查询 var stockDetails from d in db BloodBanks where d bbUserName Session username ToString sele
  • 如何在asp.net中异步执行两个作业

    网 我需要你的帮助请帮助我 请参阅我的代码 如果我的第一份工作完成 则退出btn ok代码隐藏并更新到 ASP NET 屏幕 但同时作业 2 必须工作 正在处理批量电子邮件 protected void btn ok object send
  • 哪些控件触发了 Page.IsValid = false?

    两件事情 是否可以通过 Jquery 设置 Page IsValid Is Valid 属性 以便我不必使用 aspx 验证器 据我了解 IsValid 属性是只读的 当验证器进入时 是否可以通过 Jquery 当然 找出哪些控件导致验证失
  • 任务计划程序中的 asp.net 脚本

    我有一个小的 asp net 脚本 可以作为网页执行 http localhost myscript aspx http localhost myscript aspx 我需要这个脚本每 30 秒运行一次 我正在使用 IIS 6 0 的 W
  • 密码保护 IIS 7.5 中的 ASP.NET Web 应用程序

    我在 Windows 7 上使用 IIS 7 5 为我的 asp net 网站提供测试服务 为了阻止随意的人查看我的网站 我希望 IIS 在提供任何服务之前需要用户名和密码 我已尝试在应用程序上禁用匿名身份验证并启用 Windows 身份验
  • Gridview 错误:对 Bind 的调用格式不正确

    我有以下 gridview 代码
  • 命名空间“Microsoft”中不存在类型或命名空间名称“AspNet”错误?

    I ve downloaded a website and in VS express open it through file gt open website When I press F5 to debug I get build er
  • 隔离必需的字段验证器?

    我在页面上有两个搜索按钮 一个链接到下拉列表 另一个链接到带有文本框的下拉列表以获取更多搜索条件 我在所有上述控件上都需要现场验证器 当我从第一个下拉列表中选择某些内容并单击相应的搜索按钮时 文本框的字段验证器会触发 从而禁用第一个搜索按钮
  • ModelState 对于空模型有效

    我有一个具有必需属性的模型对象 public class ApiPing Required public DateTime ClientTime get set public DateTime ServerTime get set 我有一个
  • 如何正确编码 mailto 链接?

    我正在生成一些 HTML 并且我想生成 XSS 和数据库内容安全的mailto关联 这里使用的正确编码是什么 这个怎么样 myLiteral Text string Format mailto 0 Content Type text htm
  • 如何向 Azure SQL 的 ASP.NET 成员资格提供程序添加重试逻辑?

    我们在 Azure SQL 数据库上有一个基于 ASP net sqlMembershipProvider 的用户数据库 很明显 开箱即用的 sqlMembershipProvider 4 0 不具备 Azure SQL 连接所需的重试逻辑
  • 使用 ASP.NET 开发服务器测试多个域

    我正在开发一个 Web 应用程序 该应用程序将根据用于访问该网站的域名动态更改其内容 多个域将指向同一个应用程序 我希望使用以下代码 或类似的代码 来检测域名并执行自定义 string theDomainName Request Url H
  • AuthenticationException:由于证书链中的错误,远程证书无效:UntrustedRoot

    我正在执行一项任务 使用本地 WebAPI 服务从本地 ToDo WebApp 对 Azure 中的 Active directory B2C 实例进行身份验证 除了在 Azure 试用版订阅中添加一个 B2C 实例之外 我还创建了 2 个
  • 使用 MSBuild Web 部署到服务器

    我在 VS 2012 项目中设置了发布配置文件 当我在 VS 中右键单击该项目 选择 发布 并单击 发布 按钮时 它会使用 发布配置文件 中提供的设置将项目发布到服务器 当我使用 msbuild 和命令行时 使用以下语法 msbuild e
  • 如何从用户控件引用母版页?

    我正在寻找一种方法 最好 从使用母版页的内容页中找到的用户控件强类型母版页 遗憾的是 您不能在用户控件中使用它 我试图从用户控件访问母版页的属性 而不必将该属性从母版页传递到内容页再传递给用户控件 因为多个内容页使用相同的用户控件 一处改变
  • 如果用户可以解密 web.config,那么加密它有什么意义呢?

    哎呀 一些供应商告诉我的老板 不加密 web config 是一个很大的安全漏洞 这对我来说听起来像是废话 我的意思是 如果有人破坏了服务器 我们不是就完蛋了吗 就像 Joelt 所建议的那样 ASP NET 最近出现了一个安全问题 允许人
  • 如何在 HttpResponseMessage 上设置响应 cookie?

    我想在 Web api 中创建一个演示登录服务 并且需要在响应上设置 cookie 我怎么做 或者有什么更好的授权方式吗 添加参考System Net Http Formatting dll并使用AddCookies中定义的扩展方法Http
  • 网页执行回发时如何停止在注册表单上?

    我正在做我的最后一年的项目 其中 我在一页上有登录和注册表单 WebForm 当用户点击锚点时Sign Up下拉菜单ddlType 隐藏 和文本框 txtCustName txtEmail and txtConfirmPassword 显示

随机推荐