Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net web api ASP.NET 5+;MVC 6+;带有PUT或PATCH谓词的Web API控制器返回404错误_Asp.net Web Api_Asp.net Core_Asp.net Core Mvc_Config.json - Fatal编程技术网

Asp.net web api ASP.NET 5+;MVC 6+;带有PUT或PATCH谓词的Web API控制器返回404错误

Asp.net web api ASP.NET 5+;MVC 6+;带有PUT或PATCH谓词的Web API控制器返回404错误,asp.net-web-api,asp.net-core,asp.net-core-mvc,config.json,Asp.net Web Api,Asp.net Core,Asp.net Core Mvc,Config.json,作为新ASP.NET项目的一部分,我在MVC6(Beta3)中构建了一个基本的Web API控制器。我遇到的问题是,每当我尝试使用这些方法访问URL时,它不接受动词PUT或PATCH,并返回错误404 以下是我的基本测试: 名称空间测试.控制器 { [路线(“api/测试”)] 公共类TestController:控制器 { [HttpGet] 公共字符串TestGet() { 返回“Hello from GET!”; } [HttpPost] 公共字符串TestPost() { 返回“你好发帖

作为新ASP.NET项目的一部分,我在MVC6(Beta3)中构建了一个基本的Web API控制器。我遇到的问题是,每当我尝试使用这些方法访问URL时,它不接受动词PUT或PATCH,并返回错误404

以下是我的基本测试:

名称空间测试.控制器
{
[路线(“api/测试”)]
公共类TestController:控制器
{
[HttpGet]
公共字符串TestGet()
{
返回“Hello from GET!”;
}
[HttpPost]
公共字符串TestPost()
{
返回“你好发帖!”;
}
[HttpDelete]
公共字符串TestDelete()
{
返回“Hello from DELETE!”;
}
[HttpPut]
公共字符串TestPut()
{
返回“Hello from PUT!”;
}
[HttpPatch]
公共字符串TestPatch()
{
返回“补丁你好!”;
}
}
}
访问
http://localhost/api/test
使用“邮递员”检查URL,并依次使用每个动词(GET、POST、DELETE、PUT和PATCH)检查GET、POST和DELETE,这对GET、POST和DELETE都很好,但使用PUT和PATCH会给出404

编辑: 我记得有一种方法可以为MVC5和更低版本启用这些动词,包括禁用WebDAV并通过
web.config
为这两个动词添加处理程序,但由于ASP.NET 5中没有
web.config
这样的东西,我完全不知道如何解决这个问题。我假设它可能是通过
config.json
解决的,但我所有的搜索尝试都没有得到任何有用的结果

我以前在MVC5中开发的一个站点没有这个问题,并且在查看了
web.config
文件之后,其中似乎没有任何东西可以禁用WebDAV(实际上已卸载)或允许处理无扩展URL的PUT/PATCH方法。所以我认为我之前写的不适用

有什么想法吗


谢谢

web.config支持仅从应用程序的.NET和ASP.NET部分删除。如果您的应用程序托管在IIS中,您仍然需要一个web.config,就像您在web API中所做的那样。

web.config仍然存在,并且是IIS所必需的。尽管我的代码中没有任何更改,但今天早上它似乎工作正常。我将把这归因于某个地方的bug,因为没有理由它以前不应该工作,现在突然开始工作。奇怪的是,上面的代码对我来说每一个动词都很好。对我来说,它似乎非常断断续续。有时它工作正常,但有时它会失败,并给我一个404错误。我猜Roslyn编译器或IIS Express中一定有一个bug,因为在IIS Express中重新启动站点通常可以修复它。这是一个小痛苦,但至少我的代码没有任何问题!按作者要求结束。谢谢。我将把
web.config
放在我的项目中的什么位置?如果我把它放在项目的根目录中,那么它在发布时不会被复制,但是如果我把它放在
wwwroot
中,那么它不会覆盖发布创建的
web.config
吗?还是发布后必须手动添加文件?如果是这样,是否有一种简单的方法获得VS2015(目前使用CTP6)要自动附加这些设置,这样我就不必在每次发布网站时都手动添加这些设置了?我已经编辑了我的问题,因为我不再相信以前在MVC 5中开发的项目中出现的与
web.config
设置相关的问题不需要任何特殊设置,并且可以很好地处理PUT/PATCH谓词。