【问题标题】:Redirect all the not found routes in dotvvm重定向 dotvvm 中所有未找到的路由
【发布时间】:2016-11-26 16:12:41
【问题描述】:

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

这以某种方式说明了我的意思:

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

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

http://localhost/WhatEverNonExistingPage

请求被重定向到

http://localhost/Home

【问题讨论】:

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

标签: c# dotvvm


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    这是一种有点冗长的方法,但如果您正在编写一个带有微服务的混合应用程序,那么它可能是有意义的。

    设置:

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

    在 Nancy 处理自定义 404。

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

    【讨论】:

    • 404 错误不会引发任何异常,它只是被忽略并调用管道中的下一个中间件。
    • 你是对的,它不能用异常过滤器来完成。我将不得不记下我自己的答案..
    猜你喜欢
    • 2011-05-07
    • 1970-01-01
    • 2018-02-14
    • 2018-08-13
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 2016-04-25
    相关资源
    最近更新 更多