【问题标题】:aspnet core and angular2 page refresh issueaspnet core 和 angular2 页面刷新问题
【发布时间】:2016-12-06 13:53:17
【问题描述】:

我有一个 ASP.Net 核心应用程序,它仅用于 Web API 并具有 Angular 2 前端。当我将路由添加到 Angular 应用程序并导航到 Angular 中的某个路由时,它会导航,但是当我刷新页面时,出现找不到页面错误。 我在配置方法中有以下内容

    app.Use(async (context, next) =>
        {
            await next();

            if (context.Response.StatusCode == 404
                && !Path.HasExtension(context.Request.Path.Value))
            {
                context.Request.Path = "/index.html";
                context.Response.StatusCode = 200;
                await next();
            }
        });

我尝试添加重写规则,例如 Angular2 routing with Asp.net 4.5

当我这样做时出现客户端错误

Uncaught SyntaxError: Unexpected token

感谢任何帮助。谢谢

【问题讨论】:

  • 我在 app.UseStaticFiles(); 之后得到了上面的代码在我更改订单并放置 app.UseStaticFiles();在上面的代码工作之后。

标签: asp.net angular


【解决方案1】:

你的代码更像是一个丑陋的修复而不是真正的管理。

您需要做到这一点,以便您的路由在服务器端进行管理,然后根据需要从客户端正确管理。

当我在我的 ASP.NET / Angular2 项目中使用 MVC 时,我这样做是为了让我的那些不是 API 调用的 URL 可以使用 FallBackRoute 进行管理。

        app.UseMvc(r =>
        {   
            r.MapRoute(
                name: "default",
                template: "{controller}/{path?}/{action}/{id?}",
                defaults: new { controller = "Home", action = "Index" }
            );
            r.MapSpaFallbackRoute(
                name: "spa-fallback",
                defaults: new { controller = "Home", action = "Index" }
            );
        });

这样,在刷新或手动加载 URL 时,我的 index.cshtml 将被加载并加载 Angular2 核心,然后使用路由器管理所需的路由。

恕我直言,这比观察 404 错误要好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-31
    • 2016-09-06
    • 2011-05-13
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多