일부 레거시 URL을 지원하고 컨트롤러 작업에 매핑하려고합니다. URL은 다음과 같이 : 내 컨트롤러는 그들과 거래를하는특수 문자가있는 MVC 경로
여기routes.MapRoute(
"LegacyCategory",
"{path}.html",
new { controller = "LegacyCI", action = "Index", }
);
는 (의 시작을)입니다 :
public class LegacyCIController : Controller {
public ActionResult Index(string path) {
if (path == "~Address+Labels") {
return RedirectToAction("Display", "Category", new { id = "AddressLabels" });
}
return RedirectToAction("Index", "Category");
}
}
난에 중단 점을 설정하면 다음
/~Home+Office~Note+Pads.html
내 경로입니다 LegacyCIController에서 시작 페이지를 XXX.html로 설정하면 중단 점이 발생하고 (
if
은 실패합니다.) 수명이 좋습니다. 그러나 시작 페이지를
~Address+Labels.html
으로 설정하려고 할 때 중단 점이 발생하지 않고 Chrome에서 "oops,이 페이지가 손상된 것으로 보입니다"라는 페이지가 표시됩니다.
Visual Studio가 아닌 내 컴퓨터에서 IIS 7을 통해이 페이지를 실행하고 있습니다.
이 URL은 일반 MVC 경로가 처리 할 수없는 형식이 잘못 되었나요? 아니면 내가 잘못된 것이 있습니까?
와우, 그거 예쁜 파일 이름이야. – Tejs
@Tejs - 예, 가능합니다. 레거시 물건 다루는 것은 삶의 진정한 기쁨 중 하나입니다 :) –
내 이론은 IIS가 요청을 수신 거부하는 것입니다. IIS7에 블랙리스트 URL 문자 집합이 있다고 생각합니다. – Tejs