微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c#-使用Visual Studio和.NET进行Angular 2路由

我在Angular 2的网站上完成了“英雄巡回赛”教程,一切工作都很好.如果单击鼠标,URL会更改,并且刷新后,它会带我到以前的位置,就像正确路由一样.

我现在想在后端使用.NET和C#,所以我浏览了Angular 2的教程,该教程介绍了如何使用Visual Studio设置项目(我之前使用的是Sublime Text).我完成并使其正常工作,但是注意到只有在按下后退/前进按钮时,路由才起作用.刷新功能不像我刚刚使用Sublime和NPM时那样.我回到本教程,并在底部找到一条与我有关的消息:

“如果此应用程序使用Angular路由器,则浏览器刷新可能会返回404-未找到页面.请查看地址栏.它是否包含导航网址(“深层链接”)?我们必须将服务器配置为为这些请求返回index.html.在执行此操作之前,请删除导航路径并再次刷新.”
https://angular.io/docs/ts/latest/cookbook/visual-studio-2015.html#!#build-and-run

这是否意味着无论何时刷新页面,Angular 2的路由都无法在Visual Studio中使用?使用Visual Studio / .NET / C#时,Angular 2的路由能否完全正常运行没有希望吗?

解决方法:

Angular 2使用HTML5历史记录API.这些网址看起来就像其他任何网站一样.加载http://example.com/posts/23时,.NET后端将尝试处理它,如果不能,则返回404.

那不是你想要的.

您想返回index.html的内容,然后让Angular处理其余部分.

请注意,您不想重定向http://example.com/index.html,如果这样做将加载角度,但会丢失当前路径.这样,您将永远无法共享指向您网站的链接.

我假设您使用的是.NET Core和Visual Studio模板的最新版本.

你需要做什么:

>安装此NuGet包Microsoft.AspNetCore.StaticFiles
>转到Startup.cs并找到Configure方法
>在app.UseMvc()之前添加这些行;

app.UseDefaultFiles();
app.UseStaticFiles();

>在app.UseMvc()之后添加这些行;

app.Run(async context =>
{
    context.Response.StatusCode = 200;
    context.Response.ContentType = "text/html";
    await context.Response.SendFileAsync("./wwwroot/index.html");
});

>将此添加文件顶部

using Microsoft.AspNetCore.Http;

有关更多信息,请参见此处:

https://docs.asp.net/en/latest/fundamentals/static-files.html

https://angular.io/docs/ts/latest/guide/router.html#!#base-href

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐