- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在这里阅读了一些文章/博客帖子和问题,但我仍然对 ASP.NET Core 2.1 中 UseSpaStaticFiles()
和 UseSpa()
中间件的用法感到困惑.(引用: What is the difference between UseStaticFiles, UseSpaStaticFiles, and UseSpa in ASP.NET Core 2.1? https://blog.steadycoding.com/usedefaultfiles-usestaticfiles-usespastaticfiles-usespa/ )
我在 ASP.NET Core 2.1 中使用 Angular 项目模板,它带有一组预定义的中间件,添加到 Startup.cs
文件中的管道:
public void ConfigureServices(IServiceCollection services)
{
services.AddSpaStaticFiles(configuration =>
{
configuration.RootPath = "ClientApp/dist";
});
}
public void Configure(IApplicationBuilder app)
{
app.UseStaticFiles();
app.UseSpaStaticFiles();
app.UseSpa(spa =>
{
if (env.IsDevelopment())
{
spa.UseProxyToSpaDevelopmentServer("http://localhost:4000");
}
});
}
我的困惑如下:Angular 项目是外部编译的,编译后的 js 文件位于 ClientApp/dist
文件夹中,环境也设置为生产环境,所以我假设 UseSpaStaticFiles()
将为 Angular 页面提供服务,因为 ClientApp/dist
文件夹具有相应的内容。此外,UseSpa()
中间件在这种情况下毫无用处,因此我可以删除它。
但是,如果 UseSpa()
被移除,则 Angular 页面根本不会加载,尽管 UseSpaStaticFiles()
应该基于页面提供服务在 ClientApp/dist
的内容上。 (如果 UseSpaStaticFiles()
和 UseSpa()
都添加到中间件管道,则 Angular 页面从 ClientApp/dist
文件夹成功提供这意味着 UseSpaStaticFiles()
为它服务。)
如果环境设置为生产环境,则根本不配置 UseSpa()
,它只是添加到中间件管道中。
你能帮我澄清一下为什么 UseSpaStaticFiles()
不能在没有 UseSpa()
的情况下提供页面吗?为什么 UseSpa()
应该总是被添加到管道中,即使它不提供任何服务?我是否遗漏了导致此行为的配置中的某些内容?
最佳答案
UseSpa
本质上是一个包罗万象的路由处理程序,它将所有以前未处理的路由转发到您的单页应用程序。这样,您的 SPA 就可以执行客户端路由之类的操作,而您的服务器应用程序不必知道客户端应用程序可以理解的所有路由。
相比之下,UseSpaStaticFiles
是一个静态文件处理程序,它只提供已编译的应用程序文件,例如应用程序包,如 app.js
或 vendor.js
,在它们各自的名称下,就像 UseStaticFiles
适用于 wwwroot 中的静态文件
文件夹。
关于c# - 如果 UseSpaStaticFiles() 应该服务于 Angular 页面,为什么仍然需要 UseSpa()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66357359/
我在这里阅读了一些文章/博客帖子和问题,但我仍然对 ASP.NET Core 2.1 中 UseSpaStaticFiles() 和 UseSpa() 中间件的用法感到困惑.(引用: What is
升级后我的 .NetCore 2.2申请到Net Core 3.1 .我现在在 startup.cs 中遇到问题与 UseSpaStaticFiles() 相关的文件方法。 public vo
ASP.NET Core 2.1.1 为 appBuilder 提供了几个看似相关的扩展方法: UseStaticFiles 来自 Microsoft.AspNetCore.StaticFiles U
我是一名优秀的程序员,十分优秀!