为什么 MapHttpAttributeRoutes 在服务结构中的无状态 Web API 中不起作用?

Why does not MapHttpAttributeRoutes work in Stateless Web API in service fabric?

默认情况下,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 控制器时,相同的代码工作正常。

我是不是做错了什么?

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