默认情况下,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控制器时,相同的代码工作正常。
我在这里做错了吗?
答案 0 :(得分:0)
属性路由工作得很好,无论是在Service Fabric上还是在其他地方托管,它都是相同的ASP.NET。我们在Party Cluster sample中使用属性路由。正如Federico评论的那样,请确保您的控制器上不仅仅有RoutePrefix。