우선에서 실행되는 ASP.NET 웹 API 2되면, MVC 프레임 워크에 전달하는 특정 파일 확장자를 가진 요청을 허용하도록 web.config
를 구성합니다.
문제는 IIS가 정적 파일로 .ab
파일을 처리하고 것입니다 것이다 MVC 응용 프로그램을 통해 기본 라우팅하지 가상 .ab
파일을하여. IIS가 요청을 처리하고 MVC 코드가 절대로이 파일로 라우팅 할 수 없습니다.
<system.webServer>
<handlers>
<!-- other handlers -->
<add name="ABHandler"
path="*.ab"
verb="GET" type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="0" />
<!-- other handlers -->
</handlers>
</system.webServer>
핸들러에서 허용되는 동사의 주를 가지고 수행합니다
은 요약하면, 여기 .ab
파일이 작동하도록처럼 구성이 어떻게 표시되는지를 보여줍니다. 서비스의 필요에 맞게 업데이트하십시오.
그런 다음 이러한 요청이 하나의 컨트롤러에만 해당되는 경우 해당 경로를 원하는 컨트롤러에 매핑하십시오.
모든 작업이 특정 컨트롤러에 속한 경우 관습 기반 접근 방식을 적용 할 수 있습니다.
public static class WebApiConfig
public static void Register(HttpConfiguration config) {
// Attribute routing.
config.MapHttpAttributeRoutes();
// Convention-based routing.
config.Routes.MapHttpRoute(
name: "SmallServiceApi",
routeTemplate: "api/SmallService/{action}.ab",
defaults: new { controller = "SmallService" }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
또한 속성 라우팅을 통해 다른 방법이 있습니다. 당신은 각각의 컨트롤러에있는 모든 조치를 태그해야하고 많은이있는 경우 다음이 매우 반복 될 수있는 환경 설정, 거기에 따라이 방법
[RoutePrefix("api/SmallService"]
public class SmallServiceController : ApiController {
//GET api/SmallService/GetCustomer.ab
[HttpGet]
[Route("GetCustomer.ab")]
public IHttpActionResult GetCustomer() { ... }
}
단점.
감사! 실제로 이것은 흥미 롭습니다. web.config에 다음을 추가하여 다른 방법을 찾았습니다. 제대로 작동하는 것 같습니다. –
다행 이군. !! – Nkosi
비슷한 문제를 가진 다른 사람들이 자신에게 맞는 해결책을 누릴 수 있도록 자신의 질문에 대한 답변으로 추가해야합니다. – Nkosi