You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio发布到Azure时wwwroot子文件夹存放位置查询

核心原因

VS2022发布ASP.NET Core到Azure App Service后资源可正常访问、但KUDU里site/wwwroot路径找不到对应子文件夹,基本是三类原因导致的:

  • 项目未将wwwroot下的子文件夹标记为待发布内容:如果这些文件夹是本地手动创建、运行时自动生成,没有被csproj纳入<Content>项规则,发布流程不会把这类文件打包上传到Azure站点目录
  • 发布时开启了预编译选项:勾选发布期预编译后,静态资源会被嵌入编译生成的dll文件中,运行时由静态文件中间件直接从程序集读取,不会以物理文件形式存在磁盘上,所以访问正常但找不到实体文件
  • 开启了Azure App Service本地缓存:开启该功能后,KUDU默认进入的共享存储路径不是运行时实际加载内容的路径,文件都存放在实例本地缓存目录里。
排查&解决步骤
  1. 修正本地项目的发布包含规则
    右键本地项目中wwwroot下的SimFiles、StaticPages、Videos、Docs几个文件夹,打开属性面板,将「生成操作」设为内容,「复制到输出目录」设为如果较新则复制。也可以直接编辑项目的.csproj文件,添加如下配置强制包含wwwroot下所有内容:
    <ItemGroup>
        <Content Include="wwwroot\**" CopyToPublishDirectory="PreserveNewest" />
    </ItemGroup>
    
  2. 调整发布配置
    打开VS2022的发布配置页,找到「文件发布选项」板块,取消勾选在发布期间预编译选项,保存配置后重新发布站点。
  3. 检查本地缓存配置
    进入Azure门户对应App Service的「配置」-「应用程序设置」页,查找是否存在WEBSITE_LOCAL_CACHE_OPTION配置项,如果值为Always说明已开启本地缓存。此时直接在KUDU控制台切换到路径D:\local\VirtualDirectory0\site\wwwroot,就能找到目标子文件夹。
  4. 快速定位文件位置
    如果不想逐路径排查,直接在KUDU的CMD调试控制台进入D:\home\site\wwwroot路径后,执行dir /s SimFiles命令全局搜索目标文件夹,命令会直接返回文件所在的完整路径。

要是排查后发现资源确实被嵌入到程序集里,就没法直接在KUDU里删物理文件清理冗余,只能调整本地文件后重新全量发布覆盖。

内容的提问来源于stack exchange,提问作者RJCurry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 10:18:21