기존 MVC 웹 응용 프로그램에 웹 API를 추가 한 후 404 오류
여기에 좋은 질문이 있습니다. 기존 ASP.NET MVC 4 웹 응용 프로그램 프로젝트에 웹 API를 추가하는 방법은 무엇입니까?
불행히도 내 문제를 해결하는 데 충분하지 않았습니다. 나는 내가 잘못한 일이 없도록 두 번 시도했다. "Controllers"를 마우스 오른쪽 버튼으로 클릭하고 "Web API 2 Controller with actions, using Entity Framework"항목을 추가했습니다. 여기서 모델 클래스와 db 컨텍스트를 선택했습니다. 모든 것이 잘 진행되었지만 여전히 ... / api / Rest에 액세스하려고 할 때마다 404 오류가 발생했습니다 (내 컨트롤러 이름은 RestController입니다).
작동 중입니다 !!! 나는 믿고 싶지 않았지만 문제는 Global.asax 라우팅 순서 와 관련이 있습니다.
작동하지 않는 경우 :
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
GlobalConfiguration.Configure(WebApiConfig.Register); //I AM THE 4th
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
다음과 함께 작동합니다.
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register); //I AM THE 2nd
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
미친, 알아.
기존 MVC (5) 프로젝트 내에서 WebAPI를 사용하려면 다음 단계를 수행해야합니다.
1. WebApi 패키지를 추가합니다.
Microsoft.AspNet.WebApi
Microsoft.AspNet.WebApi.Client
Microsoft.AspNet.WebApi.Core
Microsoft.AspNet.WebApi.WebHost
Newtonsoft.Json
2. 폴더에 WebApiConfig.cs
파일 추가 App_Start
:
using System.Web.Http;
namespace WebApiTest
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
3. 다음 줄을 추가합니다 Glabal.asax
.
GlobalConfiguration.Configure(WebApiConfig.Register);
중요 참고 사항 : 정확히 다음 줄 위에 추가해야합니다.AreaRegistration.RegisterAllAreas();
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
//\\
GlobalConfiguration.Configure(WebApiConfig.Register);
//\\
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
"새 경로를 추가 할 때 맨 위에 특정 경로를 추가하고 끝에 더 일반적인 경로를 추가해야한다는 점을 항상 염두에 두십시오. 그렇지 않으면 웹 앱이 적절한 경로를 수신하지 못할 것입니다."
위의 내용은 여기에서 인용 한 것입니다. http://www.codeproject.com/Tips/771809/Understanding-the-Routing-Framework-in-ASP-NET-MVC
I know the answer is already given, but this could help to understand why we need to put GlobalConfiguration.Configure(WebApiConfig.Register); before RouteConfig.RegisterRoutes(RouteTable.Routes);
'IT박스' 카테고리의 다른 글
Play Framework 2.x 용 SBT 컴파일은 기본적으로 비활성화되어 있습니다. (0) | 2020.12.05 |
---|---|
HTTP를 사용하여 설정된 HTTPS를 통해 쿠키 읽기 (0) | 2020.12.05 |
Objective-C에서 Swift 유형의 속성에 액세스 할 수 없습니다. (0) | 2020.12.04 |
다중 부분 양식 데이터로 게시물 가져 오기 (0) | 2020.12.04 |
모든 오브젝트 파일을 별도의 디렉토리에 배치하는 gcc / g ++ 옵션 (0) | 2020.12.04 |