Sco*_*ttC 8 kestrel-http-server asp.net-core
我有一个使用Kestrel在Linux上运行的asp .net核心应用程序。
它绑定到端口80上的ip ok。
但是Nginx反向代理站点需要在非根路径下托管应用程序,例如
这样就可以了,应用程序加载了,但是应用程序不知道myapp路径-因此尝试从根目录加载内容路径资源。因此,CSS资源等不加载。
如何理想地在运行时配置应用程序以了解URL路径。
更新:
我发现在Startup.configure中使用app.UsePathBase(“ / myapp”); 应用程式会提供协助,因为应用程式会在这个OK路径上处理要求-但静态档案要求则是/myapp/images/example.jpg,传回404。
images文件夹位于wwwroot中-据我所知是UseStaticFiles的默认文件夹。
我希望该请求能够理解/ myapp实际上是虚拟的。
好的-因此必须做两件事才能使应用程序在“虚拟目录”下运行:
在启动configure方法中,我必须设置应用程序的基本路径并指定静态文件的路径。
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
...
app.UseStaticFiles("/myapp");
app.UsePathBase("/myapp");
...
}
Run Code Online (Sandbox Code Playgroud)
该应用程序还可以从/运行-不确定是否可取,但对我而言这不是一个大问题。
对于我(使用.NET Core 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();
...
Run Code Online (Sandbox Code Playgroud)
}
小智 1
斯科特·C,
一旦您的 Web 内容位于 wwwroot 下,您必须在 Startup 类的配置部分添加 app.UseStaticFiles() 。
请参阅下面的示例:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseStaticFiles();
}
Run Code Online (Sandbox Code Playgroud)
希望对您有所帮助。
| 归档时间: |
|
| 查看次数: |
3039 次 |
| 最近记录: |