我使用Kestrel在Linux上运行了一个asp .net核心应用程序。
它绑定到端口80上的ip ok。
但是nginx反向代理站点需要在非根路径下托管应用程序。
因此,这是好的,应用程序加载,但应用程序不知道myapp路径-所以尝试从根加载内容路径资源。因此,css资源等不会加载。
我如何在运行时配置该应用程序,以了解url路径。
更新:
我发现在Startup.configure中使用app.UsePathBase("/myapp");帮助,因为应用程序将处理这个路径上的请求,确定--但是静态文件请求是/myapp//myapp/example.jpg,它返回404。
图像文件夹位于www.root中--这是默认的,我对UseStaticFiles的理解是这样的。
我希望这个请求能够理解/myapp实际上是虚拟的。
发布于 2017-10-11 18:18:01
好的-所以为了让应用程序在一个“虚拟目录”下运行,必须做2件事:
在启动配置方法中,我必须为应用程序设置basepath,并为静态文件指定路径。
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
...
app.UseStaticFiles("/myapp");
app.UsePathBase("/myapp");
...
}该应用程序也运行/以及-不确定这是否是可取的,但这不是一个大问题,我现在。
发布于 2020-02-11 14:02:04
对我来说(使用.NET核心3.1)有点不同,使用ScottC的回答,它找不到静态文件,因为它正在查找my-app目录的根目录,而不是my-app/wwwroot。
这个配置在Startup.cs中适用于我:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
if (env.IsDevelopment())
{
...
}
else
{
...
app.UsePathBase("/my-app");
}
app.UseStaticFiles();
...}
发布于 2017-10-10 23:22:43
ScottC,
一旦您的web内容位于www.root之下,您就必须在Startup的配置部分添加app.UseStaticFiles()。
见下面的例子:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseStaticFiles();
}希望能帮助你。
https://stackoverflow.com/questions/46593999
复制相似问题