Web API 在 PUT 上找不到控制器
Web API Controller not found on PUT
我无法找到网络 api 2 控制器的放置操作。我是
使用 MVC5。找到控制器中的 GET 操作,并且在调用时运行良好。我尝试了几种不同的方法来解决这个问题,但都无济于事。如果有任何提示,我将不胜感激。
jquery调用:
var data = {
id: 1,
text: 'test'
};
var jsondata = JSON.stringify(data);
$.ajax({
url: serviceRoot + "Approval/" + id,
type: 'PUT',
contentType: "application/json; charset=utf-8",
data: jsondata,
success: function (results) {
alert('Content saved.');
}
})
控制器中使用的请求对象:
public class ContentRequest
{
public int id { get; set; }
public string text { get; set; }
}
从启动开始的路线:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
控制器:
using System.Collections.Generic;
using System.Web.Http;
using System.Net;
using System.Net.Http;
namespace SeacretGarden.Web.Controllers
{
public class ApprovalController : ApiController
{
[HttpPut]
public IHttpActionResult Put(int id, ContentRequest content)
{
return StatusCode(HttpStatusCode.NoContent);
}
}
}
编辑:
我的问题的解决方案是将以下内容添加到我的 web.config 文件中:
(我将 MVC5 与 Web API 控制器一起使用)
<modules>
<remove name="FormsAuthentication" />
<remove name="WebDAVModule"/>
</modules>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<remove name="WebDAV"/>
<add name="ExtensionlessUrlHandler-Integrated-4.0"
path="*."
verb="*"
type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
我的问题的解决方案是将以下内容添加到我的 web.config 文件中:(我正在使用 MVC5 和 Web API 控制器):
<modules>
<remove name="FormsAuthentication" />
<remove name="WebDAVModule"/>
</modules>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<remove name="WebDAV"/>
<add name="ExtensionlessUrlHandler-Integrated-4.0"
path="*."
verb="*"
type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
我无法找到网络 api 2 控制器的放置操作。我是 使用 MVC5。找到控制器中的 GET 操作,并且在调用时运行良好。我尝试了几种不同的方法来解决这个问题,但都无济于事。如果有任何提示,我将不胜感激。
jquery调用:
var data = {
id: 1,
text: 'test'
};
var jsondata = JSON.stringify(data);
$.ajax({
url: serviceRoot + "Approval/" + id,
type: 'PUT',
contentType: "application/json; charset=utf-8",
data: jsondata,
success: function (results) {
alert('Content saved.');
}
})
控制器中使用的请求对象:
public class ContentRequest
{
public int id { get; set; }
public string text { get; set; }
}
从启动开始的路线:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
控制器:
using System.Collections.Generic;
using System.Web.Http;
using System.Net;
using System.Net.Http;
namespace SeacretGarden.Web.Controllers
{
public class ApprovalController : ApiController
{
[HttpPut]
public IHttpActionResult Put(int id, ContentRequest content)
{
return StatusCode(HttpStatusCode.NoContent);
}
}
}
编辑: 我的问题的解决方案是将以下内容添加到我的 web.config 文件中: (我将 MVC5 与 Web API 控制器一起使用)
<modules>
<remove name="FormsAuthentication" />
<remove name="WebDAVModule"/>
</modules>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<remove name="WebDAV"/>
<add name="ExtensionlessUrlHandler-Integrated-4.0"
path="*."
verb="*"
type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
我的问题的解决方案是将以下内容添加到我的 web.config 文件中:(我正在使用 MVC5 和 Web API 控制器):
<modules>
<remove name="FormsAuthentication" />
<remove name="WebDAVModule"/>
</modules>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<remove name="WebDAV"/>
<add name="ExtensionlessUrlHandler-Integrated-4.0"
path="*."
verb="*"
type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>