【发布时间】:2012-05-01 11:07:21
【问题描述】:
我为一些大学课程创建了一个 MVC Web Api,它在我的开发机器上按预期工作(运行 VS11)。
但是,当我将应用程序部署到123reg 上的网络服务器时,GET 和 POST 以外的 HttpVerbs 似乎根本无法到达我的应用程序,最初返回的是 401 Not Authorized 响应;但是,在按照建议 here 关闭“WebDAV”模块后,这些 401 变为 405 Method not allowed。在这种情况下,我只禁用了处理程序,因为同时禁用处理程序和模块意味着我的应用程序根本没有启动(没有堆栈跟踪的错误 500 [自定义错误已关闭])。
我计划利用表单成员资格提供程序向我的 API 添加身份验证功能,但是当 401 开始出现时,我从代码中删除了所有 [Authorise] 属性。
123Reg 共享主机上的应用程序在中等信任下运行。
我一直在联系 123Reg 支持,他们提供了一些帮助,但后来决定他们无法进一步帮助我(他们建议添加 HttpHandlers,详情如下)(显然,我应该咨询网页设计师...... )
我尝试过的事情:
我已将[AllowAnonymous] 属性添加到我的控制器和/或操作中,但没有任何效果。
我添加了authorization web.config 属性,允许所有用户的所有动词和路径都经过身份验证和未经过身份验证:
<authorization>
<allow users="*" />
<allow users="?" />
<allow verbs="*" users="*" />
<allow verbs="*" users="?" />
</authorization>
我已添加(根据 123Reg 的建议):
<system.webServer>
<handlers>
<remove name="WebDAV" />
<add name="PUTVerbHandler" path="*" verb="PUT" modules="ProtocolSupportModule" resourceType="Unspecified" />
<add name="DELETEVerbHandler" path="*" verb="DELETE" modules="ProtocolSupportModule" resourceType="Unspecified" />
</handlers>
</system.webServer>
这似乎是一个进步,因为我们现在收到 405 个响应而不是 401 个响应,但是我现在无法取得任何进一步的进展。另外我还补充了:
<httpHandlers>
<add verb="*" path="*" type="System.Web.Mvc.MvcHttpHandler"/>
</httpHandlers>
这也没什么区别。
您可以提供的任何帮助将不胜感激(我真的不想为这个应用程序移动主机!)
【问题讨论】:
-
我不确定,支持站点没有指定 IIS 版本,当我在其中一张票中询问时,他们没有提供答案。他们确实有一些与 IIS 7 相关的支持文章,但我不能确定。
-
我可以确认它确实是 IIS 7
标签: iis asp.net-mvc-4 asp.net-web-api