gpt4 book ai didi

iis - PUT + DELETE Http Verbs 从共享主机网络服务器上的 API 返回 401/405

转载 作者:行者123 更新时间:2023-12-04 21:44:27 27 4
gpt4 key购买 nike

我为一些大学类(class)创建了一个 MVC Web Api,它在我的开发机器(运行 VS11)上按预期工作。

然而,当我将应用程序部署到 123reg 上的网络服务器时除了 GET 和 POST 之外的 HttpVerb 似乎根本无法到达我的应用程序,最初返回了 401 Not Authorized 响应;然而在按照建议关闭“WebDAV”模块后here这些 401s 变成了 405 Method not allowed。在这种情况下,我只禁用了处理程序,因为同时禁用处理程序和模块意味着我的应用程序根本没有启动(没有堆栈跟踪的错误 500 [自定义错误已关闭])。

我计划利用表单成员资格提供程序向我的 API 添加身份验证功能,但是当 401 开始出现时,我从我的代码中删除了所有 [Authorise] 属性。

123Reg 共享主机上的应用程序在中等信任下运行。

我一直在联系 123Reg 支持,他们提供了部分帮助,但此后决定他们无法进一步帮助我(他们建议添加 HttpHandlers,详见下文)(显然,我应该咨询网页设计师...... )

我尝试过的事情:

我已将 [AllowAnonymous] 属性添加到我的 Controller 和/或无效操作。

我添加了 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>

这也没什么区别。

如果您能提供任何帮助,我们将不胜感激(我真的不想为此应用程序移动主机!)

最佳答案

This post解决了我的问题。我做了所有常规的事情:添加了所有必要的 <handlers>条目,禁用 WebDAV,但我仍然有 401.3 未经授权。

启用表单例份验证解决了问题:

<system.web>
<compilation debug="true" targetFramework="4.0" />
<authentication mode="Forms" />
</system.web>

关于iis - PUT + DELETE Http Verbs 从共享主机网络服务器上的 API 返回 401/405,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10236477/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com