当404时重定向到home/index

本文关键字:index home 404时 重定向 | 更新日期: 2023-09-27 18:02:29

我正在开发一个ASP。.NET MVC 5应用程序,使用。NET Framework 4.5.1和c#。

当用户试图访问一个不存在的资源时,我想重定向到home/index。

是的,关于如何解决这个问题有很多疑问。我读了他们的书,但是他们的解决方法对我不起作用。

现在,我在web.config上尝试这个:

<system.webServer>
    <httpErrors>
      <remove statusCode="404" subStatusCode="-1" />
      <error statusCode="404" path="~/Home/Index" responseMode="Redirect" /> 
    </httpErrors>
</system.webServer>

但是,当我尝试访问这个URL http://host01/Views/ConnectBatch/Create.cshtml时,我得到默认的404页面。

也许问题是在path="~/Home/Index",但我尝试了path="~/",我得到相同的默认404页面。

任何想法?

当404时重定向到home/index

有很多线程在stackoverflow,但我的情况。工作这个

<customErrors mode="On" >
       <error statusCode="404" redirect="/404.shtml" />
</customErrors>

原始线程

你应该像这样处理后面代码中的错误(global.asax)

public class MvcApplication : HttpApplication
{
    protected void Application_EndRequest()
    {
        if (Context.Response.StatusCode == 404)
        {
            Response.Clear();
            var routedata= new RouteData();
            routedata.DataTokens["area"] = "ErrorArea"; // In case controller is in another area
            routedata.Values["controller"] = "Errors";
            routedata.Values["action"] = "NotFound";
            IController c = new ErrorsController();
            c.Execute(new RequestContext(new HttpContextWrapper(Context), routedata));
        }
    }
}

在你的错误控制器像这样

public sealed class ErrorsController : Controller
{
    public ActionResult NotFound()
    {
        ActionResult result;
        object model = Request.Url.PathAndQuery;
        if (!Request.IsAjaxRequest())
            result = View(model);
        else
         return RedirectToAction("Index", "HomeController");
    }
}

原始线程

这就是我如何解决我的问题。也许其他答案可以解决它,但我已经测试了其中的一些(我已经在我测试过的答案上添加了评论,说那个答案不适合我)。

我在<system.web>内的Web.config中添加了这个:

<customErrors mode="On" redirectMode="ResponseRedirect">
    <error statusCode="404" redirect="~/"/>
</customErrors>

当用户找不到资源时,我想重定向到/Home/Index .

您可以尝试~/或~/home/index。或者说改变网络的可能性很小。配置在views文件夹

也许这个答案是正确的,当我读到你的问题时,我的第一反应是处理程序

你可以尝试使用:

<httpErrors existingResponse="PassThrough" />

:ASP。. NET MVC 404处理和IIS7

And That my Help:

ASP。. NET MVC 404错误处理

试试这个,使用Session变量…当资源可用时初始化会话变量

例如:

Session["user_name"] = resource.name;

在page-load函数中检查这个变量

if(Session["user_name"] == null)
  Respon.Redirect("login.aspx");