asp.net - 使用 ASP .Net Core(非 mvc)的 Angular 2 路由

标签 asp.net asp.net-mvc angular asp.net-core

我正在尝试使用 .net core 和 Angular 2 设置路由,但是路由没有解析,因为它们是由服务器解析的。

我看到的一个解决方案是注册一个默认路由到您的家庭 Controller 或其他东西......但我没有任何 MVC Controller 。

我已将此添加到我的主要组件(并完成所有其他路由器先决条件)

@RouteConfig([
    { path: '/', name: 'Table', component: TableComp, useAsDefault: true },
    { path: '/login', name: 'Login', component: LoginComp }
])

我在 startup.cs 中确实有这些:

在 ConfigureServices() 中

services.AddMvc();

在 Configure() 中

app.UseMvc();

但由于我实际上并没有使用任何 MVC Controller 或注册任何 MVC 路由,所以我不知道如何让我的 Angular 路由在浏览器而不是服务器中解析,以及为什么它们不是只是做这件事...

最佳答案

以下配置应该适合大多数在 .NET Core 中使用客户端路由的项目:

DefaultFilesOptions options = new DefaultFilesOptions();
options.DefaultFileNames.Clear();
options.DefaultFileNames.Add("index.html");

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

    if (context.Response.StatusCode == 404 && !Path.HasExtension(context.Request.Path.Value))
    {
        context.Request.Path = "/index.html";
        await next();
    }
})
.UseCors("AllowAll")
.UseMvc()
.UseDefaultFiles(options)
.UseStaticFiles();

关于asp.net - 使用 ASP .Net Core(非 mvc)的 Angular 2 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38531904/

相关文章:

jquery - 在asp上添加jQuery点击事件:button that fires before the button does a postback

c# - global.asax 中的 session 检查与 filehandler.ashx 混淆

c# - 如何使用 VB.net 或 C# 从 Excel 动态删除行并保存

asp.net - 如何在 ASP.NET MVC 中测试自定义模型绑定(bind)器?

c# - CustomAttribute反射(reflect)html属性MVC5

javascript - 如何使用 javascript 勾选页面加载的复选框?

asp.net-mvc - 如何汇总 Razor MVC4 View 中的值?

Angular:nativeElement 在 ViewChild 上未定义

html - 某些浏览器滚动时 TranslateY 闪烁

Angular 2 - 总是重定向到 https ://instead of using http://