我们在 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"
有什么遗漏吗?
我离开开发已有一段时间了,现在我的开发者似乎坚持了下来,想帮助他。
答案 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 文件夹配置为静态文件提供程序。