gpt4 book ai didi

angular - 为什么 Asp net Core 会为我的 Angular Spa dist 文件的请求返回 index.html?

转载 作者:行者123 更新时间:2023-12-02 03:14:37 25 4
gpt4 key购买 nike

将我的 Asp Net Core Angular Spa 部署到共享 Web 服务器后,对 Angular 运行时组件的请求返回我的 index.html 文件。

编辑(为清楚起见改写问题):

我有一个由 asp net core angular 模板提供的 angular spa。当我导航到应用程序的 url 时,返回索引页面,然后返回客户端应用程序的脚本文件的后续调用也都返回 index.html ......即使 url 正在请求 runtime.js,main。 js等

除了下面的代码摘录之外,还需要什么额外的配置?

public void ConfigureServices(IServiceCollection services)
{
services.AddSpaStaticFiles(configuration =>
{
configuration.RootPath = "ClientApp/dist";
});
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseStaticFiles();
app.UseSpaStaticFiles();
app.UseMvc();

app.UseSpa(spa =>
{
spa.Options.SourcePath = "ClientApp";
});
}

在我的 angular.json 中,我指定了以下 URL 前缀:

"baseHref": "/APPNAME/",
"deployUrl": "/APPNAME/ClientApp/dist/"

源代码树似乎是正确的。

对每个运行时组件的请求都是成功的,但它们都返回我的 index.html 而不是请求的内容。

请求网址:https://example.com/MYAPP/ClientApp/dist/main.17cf96a7a0252eeecd9e.js

Chrome 网络调试器的响应:

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>APP NAME</title>

<base href="/APPNAME/">

<meta content="width=device-width, initial-scale=1"
name="viewport">
<link href="HRDRicon.png"
rel="icon"
type="image/x-icon">
<link rel="stylesheet" href="/APPNAME/ClientApp/dist/styles.d9e374eff45177231bee.css"></head>
<body class="fixed-sn white-skin">

<app-root></app-root>

<noscript>
<p>
Sorry, JavaScript must be enabled to use this app
</p>
</noscript>

<script type="text/javascript" src="/APPNAME/ClientApp/dist/runtime.e460f84ccfdac0ca4695.js">
</script><script type="text/javascript" src="/APPNAME/ClientApp/dist/polyfills.d0cb8e9b276e2da96ffb.js"></script>
<script type="text/javascript" src="/APPNAME/ClientApp/dist/scripts.a54ea6f0498a1f421af9.js"></script>
<script type="text/javascript" src="/APPNAME/ClientApp/dist/main.17cf96a7a0252eeecd9e.js"></script>
</body>
</html>

我会在评论中添加指向图片的链接,因为这在原始帖子中受到限制。

最佳答案

我也为水疗扩展而苦恼。似乎 UseSpa 为 index.html 设置了一个包罗万象的规则,该规则还拦截了对所有静态文件(如 .js 和 .css)的请求。要让我的水疗中心在子目录中工作,所需要的只是 startup.cs 中的修改 1. 和 2.。无需水疗扩展。

public static void Configure( IApplicationBuilder app, IWebHostEnvironment env)
{
// ...
app.UseHttpsRedirection();
app.UseStaticFiles();

// 1. Configure request path for app static files
var fileExtensionProvider = new FileExtensionContentTypeProvider();
fileExtensionProvider.Mappings[".webmanifest"] = "application/manifest+json";
app.UseStaticFiles(new StaticFileOptions()
{
ContentTypeProvider = fileExtensionProvider,
RequestPath = "/myapp",
FileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), @"MyApp/dist"))
});

app.UseRouting();

app.UseAuthentication();
app.UseAuthorization();

app.UseEndpoints(endpoints =>
{
endpoints.MapDefaultControllerRoute();
endpoints.MapRazorPages();
// 2. Setup fallback to index.html for all app-routes
endpoints.MapFallbackToFile( @"/myapp/{*path:nonfile}", @"MyApp/dist/index.html");
});
}

关于angular - 为什么 Asp net Core 会为我的 Angular Spa dist 文件的请求返回 index.html?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56534941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com