3

Global.asax를 통해 MapHttpAttributeRoutes를 호출하는 Web API Nuget과 StartUp WebApiConfig 코드를 추가했지만 속성 경로가 작동하지 않습니다.기존 MVC 5 웹 응용 프로그램에 속성 라우팅을 추가 할 때 작동하지 않는 원인은 무엇입니까?

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를 컨트롤러를 가지고 무슨 일이 있었는지 알아 냈

[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(); 
    } 
} 
+0

어떤 패키지를 추가하셨습니까? 정확한 이름은 무엇입니까? – DavidG

+0

패키지 목록으로 업데이트 –

+0

컨트롤러 및 라우트 속성이 어떻게 보이는지 확인할 수 있습니까? – DavidG

답변

2

컨트롤러 코드입니다. Web Api 속성 라우팅은 MVC처럼 네임 스페이스 제약 조건을 가진 액션과 컨트롤러를 구별하지 않는 것처럼 보입니다. 나는 컨트롤 클래스 이름 앞에 Admin을 붙이면 모든 것이 제대로 작동하는 것처럼 보입니다.

+0

감사합니다. 2 시간 전에이 질문을 찾았 으면 좋겠어. – ChandlerPelhams

관련 문제