Asp.net mvc 将属性路由添加到现有MVC5 web应用程序时,什么会导致属性路由不起作用?

Asp.net mvc 将属性路由添加到现有MVC5 web应用程序时,什么会导致属性路由不起作用?,asp.net-mvc,asp.net-web-api2,asp.net-web-api-routing,Asp.net Mvc,Asp.net Web Api2,Asp.net Web Api Routing,我添加了Web API nuget和启动WebApiConfig代码,这些代码通过Global.asax调用MapHttpAttribute路由,但所有属性路由都不起作用 protected void Application_Start() { SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin")); MvcHandler.DisableMvcResponseHeader = true;

我添加了Web API nuget和启动WebApiConfig代码,这些代码通过Global.asax调用MapHttpAttribute路由,但所有属性路由都不起作用

protected void Application_Start()
{
    SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));

    MvcHandler.DisableMvcResponseHeader = true;

    AreaRegistration.RegisterAllAreas();
    GlobalConfiguration.Configure(WebApiConfig.Register);
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
}
这是安装的软件包

<packages>
  <package id="EntityFramework" version="6.1.1" targetFramework="net451" />
  <package id="Microsoft.AspNet.Identity.Core" version="2.0.1" targetFramework="net451" />
  <package id="Microsoft.AspNet.Identity.EntityFramework" version="2.0.1" targetFramework="net451" />
  <package id="Microsoft.AspNet.Identity.Owin" version="2.0.1" targetFramework="net451" />
  <package id="Microsoft.AspNet.Mvc" version="5.1.2" targetFramework="net451" />
  <package id="Microsoft.AspNet.Razor" version="3.1.2" targetFramework="net451" />
  <package id="Microsoft.AspNet.WebApi" version="5.1.2" targetFramework="net451" />
  <package id="Microsoft.AspNet.WebApi.Client" version="5.1.2" targetFramework="net451" />
  <package id="Microsoft.AspNet.WebApi.Core" version="5.1.2" targetFramework="net451" />
  <package id="Microsoft.AspNet.WebApi.Owin" version="5.1.2" targetFramework="net451" />
  <package id="Microsoft.AspNet.WebApi.WebHost" version="5.1.2" targetFramework="net451" />
  <package id="Microsoft.AspNet.WebPages" version="3.1.2" targetFramework="net451" />
  <package id="Microsoft.AspNet.WebPages.Data" version="3.1.2" targetFramework="net451" />
  <package id="Microsoft.AspNet.WebPages.WebData" version="3.1.2" targetFramework="net451" />
  <package id="Microsoft.Data.Edm" version="5.6.1" targetFramework="net451" />
  <package id="Microsoft.Data.OData" version="5.6.1" targetFramework="net451" />
  <package id="Microsoft.Data.Services.Client" version="5.6.1" targetFramework="net451" />
  <package id="Microsoft.Owin" version="2.1.0" targetFramework="net451" />
  <package id="Microsoft.Owin.Host.SystemWeb" version="2.1.0" targetFramework="net451" />
  <package id="Microsoft.Owin.Security" version="2.1.0" targetFramework="net451" />
  <package id="Microsoft.Owin.Security.Cookies" version="2.1.0" targetFramework="net451" />
  <package id="Microsoft.Owin.Security.OAuth" version="2.1.0" targetFramework="net451" />
  <package id="Microsoft.SqlServer.Types" version="11.0.1" targetFramework="net451" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
  <package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.3" targetFramework="net451" />
  <package id="Newtonsoft.Json" version="6.0.3" targetFramework="net451" />
  <package id="Owin" version="1.0" targetFramework="net451" />
  <package id="RestSharp" version="104.4.0" targetFramework="net451" />
  <package id="SharpZipLib" version="0.86.0" targetFramework="net451" />
  <package id="System.Spatial" version="5.6.1" targetFramework="net451" />
  <package id="WindowsAzure.Storage" version="4.0.1" targetFramework="net451" />
</packages>

我弄明白发生了什么,我有两个同名的Api控制器。看起来Web Api属性路由不会像MVC那样区分具有名称空间约束的操作和控制器。我只是在控件类名前面加了Admin,现在一切都正常了。

您添加了哪个包?它的确切名称是什么?已用程序包列表更新我们可以看到控制器和路由属性是什么样子吗?这不适用于Web API 2。已用控制器代码更新
[Authorize(Roles = "Admin")]
[RoutePrefix("admin/api/v/{vid}/photos")]
public class PhotosController : ApiController
{
    [AllowAnonymous]
    [Route("test", Name="Test")]
    [HttpGet]
    public IHttpActionResult Test(string vid)
    {
        return Ok();
    }
}