Return HttpNot Found Does't redirect to custom error page

Forums ASP.NET MVCReturn HttpNot Found Does't redirect to custom error page
Staff asked 1 year ago

Answers (1)

Add Answer
krishna kukadiya Marked As Accepted
Staff answered 1 year ago

When returning an HttpNotFound result in ASP.NET MVC, it does not trigger the custom error handling configured in the Web.config file by default. The HttpNotFound result is specifically meant to indicate that the requested resource was not found and doesn’t initiate the error handling pipeline.

To redirect to a custom error page when returning an HttpNotFound result, you can explicitly handle the error in your action method and perform the redirection. Here’s an example:

  1. Configure the custom error page: In your Web.config file, specify the custom error page to handle HTTP 404 errors. Add the following configuration inside the <system.web> element:
<customErrors mode="On">
  <error statusCode="404" redirect="~/Error/PageNotFound" />
</customErrors>

In the above example, the redirect attribute points to the URL of your custom error page for handling 404 errors. Adjust the URL to match the path and name of your custom error page.

  1. Handle HttpNotFound result in your action method: Instead of returning the HttpNotFound result directly, you can check if the resource is not found and redirect to the custom error page explicitly.
public ActionResult MyAction()
{
    // Check if the resource is not found
    if (/* Resource not found condition */)
    {
        return RedirectToAction("PageNotFound", "Error");
    }

    // Normal action logic
    // ...

    return View();
}

In the above example, you can replace /* Resource not found condition */ with the actual condition that determines if the resource is not found. If the condition is met, it redirects to the PageNotFound action in the Error controller.

  1. Create the custom error page: Create a controller named ErrorController with an action named PageNotFound that serves the custom error page.
public class ErrorController : Controller
{
    public ActionResult PageNotFound()
    {
        // Custom error page logic
        // ...

        return View();
    }
}

In the above example, you can implement any additional logic or render the custom error page as needed.

By handling the HttpNotFound result explicitly in your action method and performing a redirect to the custom error page, you can ensure that the custom error handling configured in the Web.config file is triggered and the user is redirected to the appropriate error page.

Subscribe

Select Categories