【问题标题】:Why does not MapHttpAttributeRoutes work in Stateless Web API in service fabric?为什么 MapHttpAttributeRoutes 在 Service Fabric 的无状态 Web API 中不起作用?
【发布时间】:2016-10-01 11:40:20
【问题描述】:

默认情况下,Service Fabric 中 Web API 的 VS 2015 模板会为 Web API 控制器创建基于 OWIN 的托管。该服务在 Startup.cs 文件中的默认代码为:

public static void ConfigureApp(IAppBuilder appBuilder)
{
    // Configure Web API for self-host. 
    HttpConfiguration config = new HttpConfiguration();

    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "{controller}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );

    appBuilder.UseWebApi(config);
}

我用以下代码替换了这段代码:

public static void ConfigureApp(IAppBuilder appBuilder)
{
    // Configure Web API for self-host. 
    HttpConfiguration config = new HttpConfiguration();

    config.MapHttpAttributeRoutes();

    appBuilder.UseWebApi(config);
}

并添加了

[RoutePrefix("mycontroller")]
public class ValuesController : ApiController
{
    ...
}

并尝试通过http://localhost:port/mycontroller. 导航

它不起作用。

当我使用 ASP.NET 宿主项目创建 Web api 控制器时,相同的代码可以正常工作。

我在这里做错了吗?

【问题讨论】:

  • 您是否为您的操作添加了Route 属性? RoutePrefix 单独不会创建任何路由。
  • 你是对的。我忘记将 Route 属性添加到操作中。谢谢。

标签: asp.net-web-api service owin azure-service-fabric stateless


【解决方案1】:

属性路由工作得很好,无论是托管在 Service Fabric 上还是其他地方,它都是相同的 ASP.NET。我们在Party Cluster sample 中使用属性路由。正如 Federico 评论的那样,确保您的控制器上不仅仅是 RoutePrefix。

【讨论】:

    猜你喜欢
    • 2016-08-17
    • 2017-06-09
    • 1970-01-01
    • 2019-07-24
    • 2016-08-27
    • 2017-05-20
    • 2016-11-16
    • 2018-04-09
    • 2017-11-23
    相关资源
    最近更新 更多