3

我目前正在使用 serviceStack 创建托管在 MVC Web 应用程序中的基于 REST 的服务。

到目前为止,ServiceStack 非常棒,我已经完成了大部分我想做的工作。所有这些都在 IISExpress 中工作。

我现在已移至 IIS 7.5,并且在执行 PUT 时收到“未找到请求处理程序”的 400 错误。GET 工作正常,并且在 IISExpress 上 PUT 和 GET 都可以工作。

在 IISExpress 上,这一切都奏效了。

有任何想法吗?

4

1 回答 1

9

有关 IIS + PUT/DELETE 动词的一些信息取自NancyFx WebFx ASP.NET 文档

默认情况下,IIS 6 不支持 PUT 和 DELETE 动词。要启用此功能,您需要向 Nancy 应用程序的虚拟目录添加通配符映射 - 请阅读本文档中的“IIS6 无扩展 URL”部分:http: //haacked.com/archive/2008/11/26/ asp.net-mvc-on-iis-6-walkthrough.aspx

尝试在 IIS 7/7.5 上发出 PUT/DELETE 请求时,您可能会收到“405 Not allowed”页面。修复它的一种方法是删除 web.config 中的 WebDAVModule。

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
      <remove name="WebDAVModule" />
    </modules>  
</system.webserver>

Soft PUT / DELETE - 模拟 HTTP 动词

ServiceStack 还支持X-Http-Method-Override HTTP Header,它允许您使用 POST 模拟 PUT 或 DELETE(反之亦然)。

于 2012-04-23T15:37:43.173 回答