我在 ASP.NET Web API 项目中的控制器上有以下操作方法:
[Route("api/v2/project/{projectId}/stuff"), HttpGet]
public IHttpActionResult Get(int projectId)
[Route("api/v2/project/{projectId}/stuff/{id:guid}"), HttpGet]
public IHttpActionResult Get(int projectId, [FromUri] Guid id)
[Route("api/v2/project/{projectId}/stuff"), HttpPost]
public IHttpActionResult Post(int projectId, [Required] Stuff stuff)
[Route("api/v2/project/{projectId}/stuff/{id:guid}"), HttpPut]
public IHttpActionResult Put(int projectId, [FromUri] Guid blastId, Stuff stuff)
[Route("api/v2/project/{projectId}/stuff/{id:guid}"), HttpDelete]
public IHttpActionResult Delete(int projectId, [FromUri] Guid id)
由于 javascript 错误,我做了一个DELETE
请求
api/v2/project/1234/stuff/undefined
即代替GUID
对于 id,我得到了字符串"undefined"
。据我所知,这不应该与我的任何路线匹配,而是404 Not found
(甚至405 Method not allowed
), 我有一个200 OK
作为回应。
我在每个操作方法中设置了一个断点,并使用 Fiddler 重复了该请求,但没有一个断点被命中。我还尝试从 nuget 安装 WebApiRouteDebugger 包,但我们使用的是自定义控制器工厂,它通过我们的 DI 容器连接事物,所以我根本无法让它工作。我什至尝试从我的全局注册过滤器之一抛出以下异常:
throw new Exception(actionContext.ControllerContext.ControllerDescriptor.ControllerName +
" " + actionContext.ActionDescriptor.ActionName);
but the DELETE
要求still经历到200 OK
(似乎没有对有效网址的请求来做到这一点)。
我还能如何解决此问题?根本原因可能是什么?