【问题标题】:How to disable Static Files feature in .Net Core API?如何在 .Net Core API 中禁用静态文件功能?
【发布时间】:2019-10-13 18:53:08
【问题描述】:

我正在将我的 WebAPI 迁移到 .Net Core,该项目包含 razor 文件 (.cshtml),我将在运行时在调用方法时对其进行编译并返回一个 HTML 文件。

在迁移之前,所有文件都可以访问使用,之后,我只能访问"wwwroot"下的文件,不包括.cshtml等文件类型,这些文件在部署在Azure上时总是隐藏的。

它在我的机器上运行良好,问题在于它何时部署。 我试过添加和删除app.UseStaticFiles().

我正在使用 Razorlight 访问 razor 模板,它会抛出一个错误,提示该文件不存在。

【问题讨论】:

  • 部署到 azure 时是否包含 cshtml 文件?如果您使用的是 Azure WebApp,您可以导航到 .scm.azurewebsites.net 并浏览您的 Web 应用程序的文件系统。您能否确认文件已部署?
  • 我通过FTP检查了文件的可用性,似乎没有上传.cshtml文件,只有css、js和图像文件显示在wwwroot下。

标签: c# .net-core


【解决方案1】:

app.UseStaticFiles() 仅服务于 web 根 (wwwroot) 目录。如果您需要从 Web 根目录之外提供静态文件,则需要设置 StaticFileOptions,如下所示。

public void Configure(IApplicationBuilder app)
{
    app.UseStaticFiles(); // For the wwwroot folder

    app.UseStaticFiles(new StaticFileOptions
    {
        FileProvider = new PhysicalFileProvider(
            Path.Combine(Directory.GetCurrentDirectory(), "MyStaticFiles")),
        RequestPath = "/StaticFiles"
    });
}

然后您可以从MyStaticFiles 目录提供文件,例如:

http://<server_address>/StaticFiles/MyViews/test.png 提供 test.png 文件

见 - Static Files

如 cmets 所述,通过导航至 <your-web-app-name>.scm.azurewebsites.net 并检查您的项目层次结构,确保存在 'MyStaticFiles'(在您的情况下不同)。

【讨论】:

    猜你喜欢
    • 2021-03-28
    • 1970-01-01
    • 2021-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-31
    • 1970-01-01
    • 2019-12-06
    相关资源
    最近更新 更多