Asp.net web api 为什么MapHttpAttribute路由不能在服务结构中的无状态Web API中工作?

Asp.net web api 为什么MapHttpAttribute路由不能在服务结构中的无状态Web API中工作?,asp.net-web-api,service,owin,azure-service-fabric,stateless,Asp.net Web Api,Service,Owin,Azure Service Fabric,Stateless,默认情况下,服务结构中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.

默认情况下,服务结构中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。我们在应用程序中使用属性路由。正如Federico所评论的,确保控制器上的RoutePrefix不仅仅是RoutePrefix。

您是否在操作中添加了
Route
属性
RoutePrefix
本身不会创建任何路由。您是正确的。我忘了将Route属性添加到操作中。非常感谢。