如何在一个子文件夹下托管一个asp.net网络核心应用程序

问题描述:

我有一个使用Kestrel在Linux上运行的asp.net网络核心应用程序。如何在一个子文件夹下托管一个asp.net网络核心应用程序

它结合到IP端口80上

确定,但nginx的反向代理站点需要来托管应用程序的非根路径下例如

http://somesite.com/myapp

因此,这是确定的,应用程序加载,但应用程序并不了解MYAPP路径 - 所以尝试从根加载内容路径资源。因此,CSS资源等不加载。

如何在运行时理想地配置应用程序以了解url路径。

更新:

我已经发现,在使用Startup.configure app.UsePathBase( “/ MyApp的”);因为应用程序将处理这个路径上的请求确定 - 但是静态文件请求然后是/myapp/images/example.jpg,它返回一个404.

images文件夹在wwwroot - 默认情况下,据我了解为UseStaticFiles。

我本来期望的要求是理解/ myapp实际上是虚拟的。

ScottC,

一旦你的网站内容是在你有关于启动类的配置部分添加app.UseStaticFiles()wwwroot文件。

请参见下面的例子:

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

希望能帮助你。

+0

谢谢,但在启动配置我使用app.UseStaticFiles – ScottC

OK - 所以两件事情必须做,以获取应用程序的“虚拟目录”下运行:

里面的启动配置方法,我不得不设置基本路径的应用程序,并指定静态路径文件。

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
{ 
... 
app.UseStaticFiles("/myapp"); 
app.UsePathBase("/myapp"); 
... 
} 

该应用程序也运行从/以及 - 不知道如果这是可取的,但它现在不是一个大问题。

+0

这工作对我来说,网站可以从/和/ myapp访问 – Ron