当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页面。
任何想法?
有很多线程在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");