문제

아마도 여기에서 정말 간단한 것을 간과하고 있지만 조건을 기반으로 URL을 필터링 한 다음 301 개의 적절한 페이지로 리디렉션하거나 404 페이지를 발행하는 동작으로 모든 잘못된 URL을 리디렉션하려고합니다.

이를 위해 나는 경로 테이블 끝에 이와 같은 경로가 있습니다.

routes.MapRoute("Error", "{*url}", new { controller = "Main", action = "Error" }); 

public ActionResult Error(string url)
{
        if (/* Conditions are met... */)
        {
            Response.Status = "301 Moved Permanently";
            Response.AddHeader("Location", /* Destination URL */);
            Response.End();
        }

        Response.StatusCode = 404;
        return View(/* 404 page... */));
}

이것은 현지에서 완벽하게 작동합니다.

그러나 IIS6에 배포되면 .mvc (예 : OldFile.php)를 포함하지 않는 URL은 라우팅을 위해 ASP.NET 프로세스로 보내지 않습니다.

간단한 솔루션이 있습니까 / 내가 뭔가를 간과하고 있습니까?

편집 : 이것은 관련이 있습니다 이 질문, 그러나 .MVC가없는 IIS6 URL에 따라 ASP.NET MVC 처리를 위해 전송되지 않습니다.

도움이 되었습니까?

해결책

서버에 배포했을 때 ASP.NET이 호출되지 않을 가능성이 높습니다.

IIS에서 와일드 카드 매핑을 설정하여 요청이 ASP.NET을 사용하여 요청을 제공합니다.

IIS 관리자를 열고 앱을 마우스 오른쪽 버튼으로 클릭하고 속성으로 이동 한 다음 홈 디렉토리 탭으로 이동 한 다음 구성을 클릭하십시오. WildCard 응용 프로그램 맵에서 삽입을 클릭 한 다음 (위의 바로 위에 있음) C : Windows Microsoft.net Framework v2.0.50727 aspnet_isapi.dll을 "실행 가능"에 대해 입력하고 파일이 존재하는지 확인하십시오.

자세한 내용은이 문제에 도움이 된 출처를 방문하십시오. http://blog.codeville.net/2008/07/04/options-for-deploying-aspnet-spnet-mvc-to-6/

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top