如何在ASP.NET Core 6.0中配置Angular i18n的开发生产环境及代理
ASP.NET Core 6.0 + Angular 国际化应用配置问题
我搭建了一个ASP.NET Core 6.0与Angular结合的应用,已实现Angular国际化功能。目前可通过以下命令单独启动对应语言的Angular应用:
ng serve --configuration=de --serve-path /deng serve --configuration=en --serve-path /en
运行npm run build --prod --localize后,Angular项目的dist文件夹会生成包含对应语言内容的de和en两个子文件夹。
现在希望通过Visual Studio运行整个混合应用,配置开发和生产环境,但启动IIS Express时,SPA代理持续重载且无法找到Angular应用。
当前的proxy.conf.js配置如下:
const { env } = require("process"); const target = env.ASPNETCORE_HTTPS_PORT ? `https://localhost:${env.ASPNETCORE_HTTPS_PORT}` : env.ASPNETCORE_URLS ? env.ASPNETCORE_URLS.split(";")[0] : "http://localhost:23002"; const HttpsAgent = require("agentkeepalive").HttpsAgent; const PROXY_CONFIG = [ { context: ["/api"], target: target, secure: false, changeOrigin: true, agent: new HttpsAgent({ maxSockets: 100, keepAlive: true, maxFreeSockets: 10, keepAliveMsecs: 100000, timeout: 6000000, keepAliveTimeout: 90000, }), onProxyRes: (proxyRes) => { const key = "www-authenticate"; proxyRes.headers[key] = proxyRes.headers[key] && proxyRes.headers[key].split(","); }, }, ]; module.exports = PROXY_CONFIG;
在.NET 5中我可以通过类似以下的app.UseSpa配置实现,但在.NET 6.0中按此配置启动时,代理无法找到Angular页面并持续重载:
// .NET 5 Startup.cs 配置示例 var startUpLanguage = "de"; // de 对应德语,en 对应英语 var options = new RewriteOptions().AddRedirect(@"^(?!(de/|en/))(.*$)", $"{startUpLanguage}/$1"); app.UseRewriter(options); if (!env.IsDevelopment()) { // 生产环境SPA配置 } else { // 本地开发环境SPA配置 app.UseSpa(spa => { spa.Options.SourcePath = "AngularApp"; spa.UseAngularCliServer(npmScript: $"start-local-{startUpLanguage}"); }); }
对应的package.json脚本:
"start-local-de": "ng serve --configuration=de --serve-path /de", "start-local-en": "ng serve --configuration=en --serve-path /en"
咨询问题
- .NET 6中针对开发和生产环境的正确配置方案是什么?
- 如何正确配置代理以解决持续重载、无法找到Angular应用的问题?
内容的提问来源于stack exchange,提问作者Marc Thieme
相关产品推荐
相关产品推荐

