C# 在wwwroot下部署自定义静态文件夹

C# 在wwwroot下部署自定义静态文件夹,c#,asp.net-core,webdeploy,microsoft-web-deploy,C#,Asp.net Core,Webdeploy,Microsoft Web Deploy,我们在wwwroot下有一个名为Contents的自定义文件夹,其中一些内部文件夹形成了一个结构,用于组织以后可上载的文件,在发布模式下它不会部署(在本地或服务器上) 以下是您可能感兴趣的部分代码: app.UseStaticFiles(); app.UseStaticFiles(new StaticFileOptions { FileProvider = new PhysicalFileProvider( Path.Combine(Directory.GetCurren

我们在wwwroot下有一个名为Contents的自定义文件夹,其中一些内部文件夹形成了一个结构,用于组织以后可上载的文件,在发布模式下它不会部署(在本地或服务器上)

以下是您可能感兴趣的部分代码:

app.UseStaticFiles();
app.UseStaticFiles(new StaticFileOptions
{
    FileProvider = new PhysicalFileProvider(
        Path.Combine(Directory.GetCurrentDirectory(), "Contents")),
    RequestPath = "/Contents"
});
有什么建议和解决办法吗?知道为什么没有部署它吗

更新:

在.csProj中,我们有:

  <ItemGroup>
    <Folder Include="Contents\H2X\" />
    <Folder Include="ServerContent\H123\" />
  </ItemGroup>  
有什么遗漏吗


我有一段时间没有进行开发,现在我的开发人员似乎被它卡住了,想要帮助他。

在ASP.NET核心托管环境中,有两个属性经常用于构建文件或目录的物理路径

_hostingEnvironment.WebRootPath直接映射到默认的wwwroot目录:

_hostingEnvironment.ContentRootPath映射的级别更高,通常是startup.cs文件所在的位置


对于直接上传到wwwroot文件夹中的文件夹的文件,请使用WebRootPath构建所需的路径。

如果wwwroot中的内容文件夹,请添加

<Content Include="wwwroot\**\*" CopyToPublishDirectory="PreserveNewest" />
<Content Include="Contents\**\*" CopyToPublishDirectory="PreserveNewest" />

您不需要在Startup.cs中将Contents文件夹配置为静态文件提供程序,上面的行将包括wwwroot中的所有子文件夹和文件

如果目录在wwwroot之外,则添加

<Content Include="wwwroot\**\*" CopyToPublishDirectory="PreserveNewest" />
<Content Include="Contents\**\*" CopyToPublishDirectory="PreserveNewest" />


您需要在Startup.cs

中将Contents文件夹配置为静态文件提供程序,检查.csproj下的发布脚本,而不是启动类中的代码文件夹中是否有任何内容?我见过VisualStudio忽略空文件夹。如果您已在VS解决方案资源管理器中创建了该文件夹,则该文件夹是“虚拟的”……也就是说,它实际上并不存在。有时可能会令人困惑。@CamiloTerevinto添加了一个更新,它是.CSProj文件和PublishSettings文件的一部分,这些是您要查找的吗?我们是否应该向这些文件中添加任何内容?您说过
Contents
存在于
wwwroot
中,但是您的.csproj文件显示它存在于项目的根目录中。哪一个是对的?哈哈,看来你是对的,他做的文件夹结构有点不对。我把它移到了wwwroot下。现在将尝试发布。并等待我的开发人员在服务器上检查它。将提供反馈,并在需要时继续讨论。