특정 URL에 대해서 Redirect 하는 방법은 아래와 같다.

Response.Redirect(“ControllerName/ActionName”);
또는
return RedirectToAction(“ActionName“, “ControllerName“);

하지만, 존재하지않은 Controller 라면?
오류로 떨어질것이다.
그럼 어떻게 할것인가?
가령, url이 너무 길어서 줄여달라는 요구사항이 들어올 때 처리하는 방법이다. 

Global.asax.cs 파일을 열고 Application_Error() 메소드를 찾아 빨간색 표기한 부분을 추가해준다.

var httpContext = ((MvcApplication)sender).Context;
var currentController = string.Empty;
var currentAction = string.Empty;
var currentRouteData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(httpContext));

if (currentRouteData != null)
{
        if (currentRouteData.Values[“controller”] != null && !string.IsNullOrEmpty(currentRouteData.Values[“controller”].ToString()))
{
    currentController = currentRouteData.Values[“controller”].ToString();
}

if (currentRouteData.Values[“action”] != null && !String.IsNullOrEmpty(currentRouteData.Values[“action”].ToString()))
{
    currentAction = currentRouteData.Values[“action”].ToString();
}
}

원하는 경로로 리다이렉션 처리를 해준다. 
if (currentController.Equals(“direct”)) 
{
    httpContext.ClearError();
    httpContext.Response.Clear();
    httpContext.Response.StatusCode = 200;

    Response.Redirect(“/account/signup”);
}

Leave a Reply

error: Content is protected !!