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

时间:2019-02-05 14:35:04

标签: c# asp.net-core webdeploy microsoft-web-deploy

我们在 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>  

我们有H2X.publishSettings文件, 由服务器生成,并包含我们的一些凭据。

   msdeploySite="213" 
   destinationAppUrl="123" 
   profileName="Default Settings" 
   publishMethod="MSDeploy" userName="123" 
   AllowUntrustedCertificate="True"

有什么遗漏吗?

我离开开发已有一段时间了,现在我的开发者似乎坚持了下来,想帮助他。

2 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:1)

如果 wwwroot 中的 Contents 文件夹,则添加

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

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

如果 wwwroot 之外的 Contents 文件夹,则添加

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

,您需要在 Startup.cs

中将 Contents 文件夹配置为静态文件提供程序。