【问题标题】:Web API attribute routing HTTP 404Web API 属性路由 HTTP 404
【发布时间】:2014-12-22 12:50:15
【问题描述】:

我无法使属性路由在 Web API 2 中工作。我没有从 Web API 模板项目开始,我认为它是 Empty 项目。基于约定的路由有效,但是当我将 Route 属性添加到控制器操作时,出现 404 错误。我找到了很多关于这个的帖子,但没有一个对我有帮助。它可能与项目模板有关,自从我开始使用 Empty 项目以来,我必须手动执行此操作。我确实在 WebApiConfig 中调用 MapHttpAttributeRoutes 方法,并且继承 ApiController 的类是公共的。在 WebApiConfig 类和 Application_Start 方法中我还需要做什么? 提前致谢。

这是我的 WebApiConfig 文件:

public static void Register(HttpConfiguration config)
    {
        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{action}/{oId}/{oTypeCode}/{oTypeName}/{email}",
            defaults: new { controller = "Xrm", email = RouteParameter.Optional, oId = RouteParameter.Optional, oTypeCode = RouteParameter.Optional, oTypeName = RouteParameter.Optional}
        );
    }

和Application_Start方法:

protected void Application_Start()
    {
        System.Web.Mvc.AreaRegistration.RegisterAllAreas();
        GlobalConfiguration.Configure(WebApiConfig.Register);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        log4net.Config.XmlConfigurator.Configure();
    }

【问题讨论】:

  • 分享你的一些代码。看看这可能会有所帮助。

标签: visual-studio-2012 asp.net-web-api2


【解决方案1】:

当然,我的错。我试图将电子邮件地址作为路径参数传递。将其作为查询字符串参数发送有效。我不确定作为路径的一部分发送会是什么样子,但它对我有用。

【讨论】:

    猜你喜欢
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多