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

时间:2016-06-01 22:37:45

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

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

我在这里做错了吗?

1 个答案:

答案 0 :(得分:0)

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