我正在创建一个 WebApi2 服务,并且我要实现的方法之一表示来自内部树结构中的对象的 HTTP GET - 因此请求将遵循以下内容:
GET /values/path/path/to/object/in/tree
所以我希望我的方法接收“path/to/object/in/tree”。
但是,当我运行它时,我只得到一个 404,有趣的是,我得到一个与标准 IIS 404 不同的 404。它的标题是“'/'应用程序中的服务器错误。”,而一个完全无效的资源标题为“HTTP 错误 404.0 - 未找到”。
我正在使用默认模板来尝试看看我是否可以让它工作,因此相似。
我有这个RouteConfig
public static void RegisterRoutes(RouteCollection routes)
{
var route = routes.MapRoute(
name: "CatchAllRoute",
url: "values/path/{*pathValue}",
defaults: new { controller = "Values", action = "GetPath" });
}
这是我的ValuesController
:
[System.Web.Mvc.AuthorizeAttribute]
[RoutePrefix("values")]
public class ValuesController : ApiController
{
[Route("test/{value}")]
[HttpGet]
public string Test(string value)
{
return value;
}
[HttpGet]
public string GetPath(string pathValue)
{
return pathValue;
}
}
有趣的是,如果我从中派生Controller
而不是ApiController
它可以正常工作,但是正常的属性路由不起作用。
我尝试按照这篇文章(http://www.tugberkugurlu.com/archive/asp-net-web-api-catch-all-route-parameter-binding)中的方法,但我无法让它工作。
我确定我错过了一些愚蠢的简单的东西,但是在花了几个小时之后,我认为问我做错了什么是谨慎的。
谢谢
米