【问题标题】:MapHttpRoute with custom HttpMessageHandler带有自定义 HttpMessageHandler 的 MapHttpRoute
【发布时间】: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


    【解决方案1】:

    问题已解决

    只要注释掉这一行就可以了

    [Route("getprojects")] // <--- COMMENT/REMOVE THIS LINE
    

    任何想法为什么会导致问题?

    【讨论】:

      【解决方案2】:

      您的问题在我最后尝试的测试中没有复制。看来您在 RoutePrefix 属性中为控制器赋予了不同的名称。根据给出的请求Url:

      http://localhost:51077/api/v1/project/getprojects?apikey=123456

      ProjectController 类上的 RoutePrefix 属性应如下所示:

      [RoutePrefix("api/v1/Project")]
      

      【讨论】:

      • 我把它改成了 Project。仍然有效:) 但是,如果我将 [Route("getprojects")] 行添加到 GetProjects 方法,问题就会再次弹出。即使路线是空的,又名:[Route("")]
      猜你喜欢
      • 1970-01-01
      • 2017-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-24
      • 1970-01-01
      相关资源
      最近更新 更多