Asp.net web api 为什么MapHttpAttribute路由不能在服务结构中的无状态Web API中工作?
默认情况下,服务结构中Web API的VS 2015模板为Web API控制器创建基于OWIN的主机。此服务的Startup.cs文件中的默认代码为: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.
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属性添加到操作中。非常感谢。