PUT + DELETE HTTP动词从API在共享主机的网络服务器返回四百零五分之四百零一(PUT

2019-09-16 15:27发布

我已经创建了一个MVC的Web API,用于一些大学课程,我的开发机器上如预期(运行VS11)的作品。

然而,当我在应用程序部署到Web服务器123reg比其他HttpVerbs GET和POST似乎没有达到我的应用程序在所有的,最初是401不返回授权响应; 但关闭的建议“的WebDAV”模块后, 在这里这些401S成了不允许405方法。 在这种情况下,我只禁用处理程序作为禁用这两个处理程序和模块意味着我的应用程序根本不启动(错误500没有一个堆栈跟踪[自定义错误是关闭])。

我打算利用形式的成员提供身份验证功能添加到我的API,但是我删除任何[Authorise]从我的代码属性时401S开始出现。

在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>

这显然是一个进步,因为我们现在收到而不是401阶跃响应405级的响应,但是我现在无法作出任何进一步的进展。 此外,我还增加了:

<httpHandlers>
    <add verb="*" path="*" type="System.Web.Mvc.MvcHttpHandler"/>
</httpHandlers>

这也没有什么区别。

任何帮助您能给将不胜感激(我真的不希望有移动主机此应用程序!)

Answer 1:

我发现这一点: http://forums.iis.net/t/1163441.aspx

从这个论坛上发帖的容貌,你需要为PUT完全卸载WebDAV和DELETE动词来工作。 这不会帮助一个共享的虚拟主机方案很遗憾。



Answer 2:

这篇文章解决了我的问题。 我做了所有的规律性的东西:添加了所有必要的<handlers>项,禁用WebDAV的,但我仍然有401.3未经授权。

启用表单认证解决了这个问题:

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


Answer 3:

对我来说,这是不同的东西。 我不得不去站点文件夹,打开安全选项卡中的文件夹,按编辑按钮更改组或用户名称权限,找到我的IIS 8网站的网站,并给它一个完整的控制权限。



文章来源: PUT + DELETE Http Verbs returning 401/405 from API on shared hosting webserver