我为一些大学课程创建了一个 MVC Web Api,它在我的开发机器上按预期工作(运行 VS11)。
但是,当我将应用程序部署到123reg HttpVerbs 上的网络服务器时,GET 和 POST 似乎根本没有到达我的应用程序,最初返回了 401 Not Authorized 响应;但是,在按照此处的建议关闭“WebDAV”模块后,这些 401 变为 405 Method not allowed。在这种情况下,我只禁用了处理程序,因为同时禁用了处理程序和模块意味着我的应用程序根本没有启动(没有堆栈跟踪的错误 500 [自定义错误已关闭])。
我计划利用表单成员资格提供程序向我的 API 添加身份验证功能,但是[Authorise]
当 401 开始出现时,我从代码中删除了所有属性。
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>
这也没什么区别。
您可以提供的任何帮助将不胜感激(我真的不想为此应用程序移动主机!)