首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.Net核心React SPA托管在IIS本地实例的子域上

.Net核心React SPA托管在IIS本地实例的子域上
EN

Stack Overflow用户
提问于 2020-04-27 23:39:24
回答 1查看 242关注 0票数 0

我做了很多搜索,所以我希望有一个人能救我!

我有一个带有React模板的.net Core3.0应用程序设置。无论是在本地还是在部署时,我都需要在站点的子应用程序上的IIS上运行站点(例如,它被部署到https://trunk.apps.co.uk/app1 )。

身份验证的工作方式(我不能改变,因为这是公司范围内的事情)是我的应用程序有一个控制器,它接受一个authticket,然后设置一个身份验证cookie,然后在每个后续请求中提供它,以便对用户进行身份验证。

我已经设置了要配置的Startup.cs,执行以下操作:

代码语言:javascript
复制
app.UseSpa(spa =>
{
spa.Options.SourcePath = "ClientApp";

if (env.IsDevelopment()) 
{
   spa.UseProxyToSpaDevelopmentServer("http://localhost:3000");
}
}

现在,它按照预期对所有请求进行代理,但是...当react通过npm run start在后台构建应用程序时,它假设所有文件都位于站点的根目录,因此index.html中包含的javascript没有子站点'/app1/‘,例如,在url中,因此这些请求会失败,因为url是错误的(例如,URL是http://trunk.apps.co.uk/static/js/bundle.js,而它需要是http://trunk.apps.co.uk/app1/static/js/bundle.js)

例如,如果我在react项目中将PUBLIC_URL设置为'/app1/‘,那么当react为开发服务器构建应用程序时,Index.html中的url是正确设置的,但是当.net核心应用程序将这些请求代理到http://localhost:3000上时,react开发服务器现在正在http://locahost:3000/app1上运行。

我试着修改了startup.cs中的url:

代码语言:javascript
复制
spa.UseProxyToSpaDevelopmentServer("http://localhost:3000/app1");

但是路径/app1会被忽略,请求仍然只是代理到http://localhost:3000

有谁有什么建议吗?

谢谢,斯科特

EN

回答 1

Stack Overflow用户

发布于 2021-03-26 06:53:47

这对我很有效。

我的react项目是从react boilerplate

  • BFF layer克隆而来的,它是
  1. 3.0

解决方案:

  1. webpack.base.bable.jspublicPath更改为/app1/ (其中app1是使用名称配置的子应用程序或子域或子网)。如果您不使用react样板,只需在

中进行此更改即可

来自react-router-dom

  1. BrowserRouter中添加basename

BFF层中的

App.UseStaticFiles(新建StaticFileOptions { FileProvider =新建PhysicalFileProvider( Path.Combine(env.ContentRootPath,"ClientApp/build")),RequestPath = "/app1“});

  1. 确保当您有/app1 to api调用时,所有的BFF api都能正确响应。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61462623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档