2016-07-22 65 views
0

如何将所有未找到的页面请求重定向到同一视图?在dotvvm中重定向所有未找到的路由

这在某种程度上说明我的意思:

config.RouteTable.Add("Home", "*", "Views/Home.dothtml", new { }); 

背后的想法是,当有人访问一个不存在的页面:

http://localhost/WhatEverNonExistingPage 

的resquest被重定向到

http://localhost/Home 
+0

这对你有用吗? http://stackoverflow.com/questions/11045733/404-redirecting-for-non-aspx-pages – Danieboy

+0

感谢您的回复,dotvvm可以在Owin上运行,因此您不一定需要IIS来托管它。我不知道该方法是否适用于dotvvm + IIS,但在我的情况下,web.config未被使用。 –

回答

1

目前我发现的唯一方法是在dotvvm规则之外实现它:

appBuilder.Run(context => 
{ 
    context.Response.Redirect("/Home"); 
    return Task.FromResult(0); 
}); 

这意味着基本上任何不匹配配置中间件中任何路由的请求都将被重定向到“/ Home”。不是我正在寻找的答案,但它是有效的。

0

既然DotVVM是Owin,你可以在Nancy中使用它。任何在DotVVM中不匹配的路由都会传递给Nancy。然后,您可以使用Nancy处理您的404或其他可能需要的类型,例如301,如果您正在重建网站。

这是一个有点啰嗦的方法,但如果你正在编写与微服务的混合应用程序,那么它可能是有道理的。

设置:

https://github.com/riganti/dotvvm-samples-combo-with-nancy

处理自定义404在南希。

https://blog.terribledev.io/custom-error-pages-in-nancy/

+0

404错误不会引发任何异常,它只是被忽略并且管道中的下一个中间件被调用。 – exyi

+0

你是对的,它不能用异常过滤器来完成。我必须记下我自己的答案。 –