【发布时间】:2015-05-21 12:21:57
【问题描述】:
所以在消息处理程序完成后,我无法让路由正常工作。 出现的错误是: 未找到与请求 URI 匹配的 HTTP 资源
这是我目前得到的:
http://localhost:51077/api/v1/project/getprojects?apikey=123456
// all actions under /project routes require authentication
config.Routes.MapHttpRoute(
"ProjectApi",
"api/v1/{controller}/{action}/{apikey}",
new { apikey = RouteParameter.Optional },
null,
HttpClientFactory.CreatePipeline(
new HttpControllerDispatcher(config),
new DelegatingHandler[]{new BasicAuthHandler(config)}));
// all routes requires an api key
config.MessageHandlers.Add(new ApiKeyHandler());
config.MapHttpAttributeRoutes();
[RoutePrefix("api/v1/ProjectController")]
public class ProjectController : BaseApiController
{
[HttpGet]
[Route("getprojects")]
public HttpResponseMessage GetProjects()
{
HttpResponseMessage resp = new HttpResponseMessage(HttpStatusCode.OK);
if(User.Identity.IsAuthenticated)
{
}
return resp;
}
}
因此,首先会检查所有调用是否包含能够连接的 ApiKey (ApiKeyHandler) 然后出现一个弹出窗口并询问用户名和密码 (BasicAuthHandler)。如果登录成功则应该转发到 /project 下的 getprojects 方法...
ApiKey 已检查,用户名/密码弹出窗口出现并被授予,但随后出现上述错误并且路由似乎无效。我尝试了不同的方法来让它工作,但似乎我在这里遗漏了一些东西。
【问题讨论】:
标签: c# http routes asp.net-web-api