문제

프레임워크에서 예외 500 오류 코드를 발생시키지 않고 핸들러 404 오류를 처리하려면 어떻게 해야 합니까?

도움이 되었습니까?

해결책

http://jason.whitehorn.ws/2008/06/17/Friendly-404-Errors-In-ASPNET-MVC.aspx 다음과 같은 설명을 제공합니다.

최종 규칙으로 와일드카드 라우팅 규칙을 추가합니다.

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

다른 규칙과 일치하지 않는 모든 요청은 오류 컨트롤러의 Http404 작업으로 라우팅되며, 이 작업도 다음과 같이 구성해야 합니다.

public ActionResult Http404(string url) {
    Response.StatusCode = 404;
    ViewData["url"] = url;
    return View();
}

다른 팁

요청이 컨트롤러와 일치하지만 작업과 일치하지 않는 경우 컨트롤러 내에서 HandleUnknownAction을 재정의할 수도 있습니다.기본 구현에서는 404 오류가 발생합니다.

throw new HttpException(404, "리소스를 찾을 수 없음");

MVC 3에서는 HttpNotFound()를 반환하여 404를 올바르게 반환할 수 있습니다.

이와 같이:

public ActionResult Download(string fontName)
{
    FontCache.InitalizeFonts();

    fontName = HttpUtility.UrlDecode(fontName);

    var font = FontCache.GetFontByName(fontName);
    if (font == null)
        return HttpNotFound();

    return View(font);
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top