如何禁用.Net Core API中的静态文件功能?

时间:2019-05-28 09:21:21

标签: c# .net-core

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

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

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

我正在使用Razorlight访问剃刀模板,它抛出一个错误,指出该文件不存在。

1 个答案:

答案 0 :(得分:2)

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

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