在 IIS7.5 上找不到使用 serviceStack 的 PUT 处理程序

Posted

技术标签:

【中文标题】在 IIS7.5 上找不到使用 serviceStack 的 PUT 处理程序【英文标题】:PUT handler not found with serviceStack on IIS7.5 【发布时间】:2012-05-04 03:53:12 【问题描述】:

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

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

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

在 IISExpress 上一切正常。

有什么想法吗?

【问题讨论】:

【参考方案1】:

关于 IIS + PUT/DELETE 动词的一些信息取自NancyFx WebFx ASP.NET documentation:

默认情况下,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>

软 PUT / DELETE - 模拟 HTTP 动词

ServiceStack 还支持X-Http-Method-Override HTTP 标头,这将允许您使用simulate a PUT or DELETE with a POST(反之亦然)。

【讨论】:

谢谢。我已经删除了 WebDavModule。我应该尝试 X-http-method-override 吗?我的客户是弹性客户,所以我想知道这是否是问题所在? 试过 X-Http-Method-Override 和 PUT 不起作用。我尝试了 POST,但它也不起作用,尽管从 Fiddler POST 和 PUT 都可以工作。我不断从我的 flex 客户端库中收到“未找到请求的处理程序”(未找到 404)。现在有什么线索可以看吗? 我没有使用 NancyFx(直到几分钟前才知道它是什么 :)) 听起来 flex 客户端发送的 HTTP 请求与您的预期不同。我会查看嗅探 HTTP 请求的数据包(使用 Fiddler 或 WireShark 之类的东西),以便您识别差异。也可能与 CORS 相关 ***.com/questions/8211930/… 是的,flex 客户端发送了各种各样的废话,但它现在正在工作。谢谢你的帮助。再一次,令人惊叹的产品。

以上是关于在 IIS7.5 上找不到使用 serviceStack 的 PUT 处理程序的主要内容,如果未能解决你的问题,请参考以下文章

iis7.5找不到FastCgi设置,该怎么处理

IIS7.5 用 IIS AppPool应用程序池名 做账号 将各站点权限分开

在 jsf 中的类型上找不到属性

在 DbContextOptions 上找不到 UseMysql 方法

在 android 设备上找不到使用 QStandardPath 创建的文件

在共享主机中的 Lumen 项目上找不到类异常