在 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 用 IIS AppPool应用程序池名 做账号 将各站点权限分开
在 DbContextOptions 上找不到 UseMysql 方法