【问题标题】:ASP.NET MVC Core Razor wwwroot things not working/exists in app which is hosted on NginxASP.NET MVC Core Razor wwwroot 东西不起作用/存在于托管在 Nginx 上的应用程序中
【发布时间】:2021-02-07 14:49:50
【问题描述】:

我创建了一些使用位于 wwwroot 中的 (JS/CSS/png) 文件的视图。在特定本地 IP:PORT 中的本地应用程序托管中一切正常。 如果应用程序通过 nginx 运行,那么一切正常,但我无权访问 wwwroot 目录中的任何文件......所以视图没有任何 js 脚本、样式等。

此应用具有特定的路由前缀,例如:api/part/appName/Controller/ActionResultControllerMethod

静态文件的当前配置:

Startup.cs:

app.UseDefaultFiles();

_Layout.cshtml:

...
    <script src="~/lib/jquery/dist/jquery.min.js"></script>
    <script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
    <script src="~/js/site.js" asp-append-version="true"></script>
    <script src="~/lib/font-awesome/js/all.min.js"></script>
...
    <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
    <link rel="stylesheet" href="~/css/site.css" />
    <link rel="stylesheet" href="~/lib/font-awesome/css/all.min.css" />

此应用的 Njinx 配置:

location /api/part/appName {
    proxy_pass http://pre_appName/api/part/appName;
}
upstream pre_appName {
    check interval=5000 rise=1 fall=3 timeout=15000;
    server MINE_HOSTED_APP_IP:MINE_HOSTED_PORT;
}

您对如何在 njinx 主机中访问这些文件有什么建议吗?

网络开发工具有一些截图:

来自 wwwroot 文件位置的屏幕:

【问题讨论】:

    标签: c# asp.net-core nginx model-view-controller razor


    【解决方案1】:

    双门轿车小时后 - 答案是:

    var pathToExe = Process.GetCurrentProcess().MainModule.FileName;
    var pathToContentRoot = Path.GetDirectoryName(pathToExe);
    Directory.SetCurrentDirectory(pathToContentRoot);
    app.UseStaticFiles(new StaticFileOptions
    {
    
        FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), $"{pathToContentRoot}/wwwroot")),
        RequestPath = new PathString("/api/part/partName")
    });
    app.Use((context, next) =>
    {
        context.Request.PathBase = "/api/part/partName";
        return next();
    });
    app.UseRouting();
    app.UseSession();
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "api/part/partName/{controller=Login}/{action=Index}/{id?}");
    }
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-20
      • 2019-01-15
      • 2021-02-19
      • 2011-01-11
      • 2014-04-22
      • 2014-08-25
      • 2017-03-05
      • 1970-01-01
      相关资源
      最近更新 更多