为什么 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。
默认情况下,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。