我正在尝试编写一个自托管的 WebAPI 服务器。我希望所有路由都转到一个控制器。该控制器可以挑选出 url 的控制器部分并使用它来决定适当的响应。
我有以下路线配置:
_configuration.Routes.MapHttpRoute
(
name: "DefaultApi",
routeTemplate: string.Concat("api/Home", "/{id}"),
defaults: new { id = RouteParameter.Optional, controllerName="Home" }
);
我的控制器类称为“HomeController”。我正在尝试将所有 URL 重定向到它。
这是 HomeController 的代码。现在我已经注释掉了对外部逻辑(遥控器)的调用。它应该只是在 Get 操作上返回一个字符串。
public class HomeController : ApiController
{
private IExternalController<string> remoteController;
public HomeController()
{
remoteController = GlobalKernelConfiguration.GetStandardKernel().Get<IExternalController<string>>();
}
public string Get()
{
return "HELLO FROM INTERNAL"; //remoteController.Get();
}
public string Get(int id)
{
return remoteController.Get(id);
}
public void Delete(int id)
{
remoteController.Delete(id);
}
public void Post(string value)
{
remoteController.Post(value);
}
public void Put(int id, string value)
{
remoteController.Put(id, value);
}
}
我希望http://localhost:9000/api/[AnythingHere]路由到家庭控制器,但是在尝试以下 url 时出现以下错误:http://localhost:9000/api/Home
{"Message":"未找到与请求 URI ' http:// localhost:9000/api/Home'匹配的 HTTP 资源。","MessageDetail":"未找到提供控制器名称以匹配请求 URI 的路由' http://localhost:9000/api/Home '"}