ASP.NET 5接受Web API的动词

时间:2015-09-16 13:45:42

标签: asp.net asp.net-core iis-express asp.net-core-mvc

我遇到了使用ASP.NET 5(vNext)获取HTTP Delete和Put的问题。使用Delete and Put动词运行对api端点的调用导致IIS Express出现404错误。

在以前版本的ASP.NET中,您通过接受web.config中的其他谓词来启用此功能。

我已经发现更改./vs/config文件夹下的applicationhost.config可以启用delete和put动词但是必须有另一种方法从Visual Studio或新项目类型中的某个配置启用它们使用ASP.NET 5.

我在哪里可以在ASP.NET 5中配置它? hosting.ini或project.json?在其他地方?

2 个答案:

答案 0 :(得分:0)

web.config仍然是一个东西,但它只用于IIS配置,您的应用程序本身不需要,但如果您的应用程序在IIS中运行可能需要。

所以你应该能够使用

从命令行运行你的应用程序
dnx web 

在您的网络应用程序项目的根文件夹中,我希望您发现它可以在那里工作。

对于IIS,你仍然需要web.config,如果你在VS 2015中使用针对beta7的最新网络工具创建一个新的asp.net 5 web项目,它将/应该将web.config文件放在你的wwwroot文件夹中。

this article也可以帮助您

答案 1 :(得分:0)

您需要在IIS http://docs.asp.net/en/latest/publishing/iis.html上安装HTTPPlatformHandler,然后您的web.config应如下所示:

<configuration>
  <system.webServer>
    <handlers>
      <add name="httpplatformhandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />
    </handlers>
    <httpPlatform processPath="..\approot\web.cmd" arguments="" stdoutLogEnabled="false" stdoutLogFile="..\logs\stdout.log" startupTimeLimit="3600"></httpPlatform>
  </system.webServer>
</configuration>

如果您在IIS上安装了WebDAV处理程序,请将其删除或在web.config中将其删除,因为它将接管PUT和DELETE谓词。

<configuration>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"> 
      <remove name="WebDAVModule"/> 
    </modules> 
    <handlers>
      <add name="httpplatformhandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />
    </handlers>
    <httpPlatform processPath="..\approot\web.cmd" arguments="" stdoutLogEnabled="false" stdoutLogFile="..\logs\stdout.log" startupTimeLimit="3600"></httpPlatform>
  </system.webServer>
</configuration>