web deploy发布blazor报错:IIS物理路径嵌套wwwroot解决方法
在使用web deploy将blazor应用部署到IIS时,经常会出现文件路径自动嵌套(如:wwwroot)导致网站无法访问的问题。这是因为发布配置中的目标路径与应用编译输出的目录结构产生了重叠。当发布工具将包含静态资源的文件夹再次推送到已经存在的同名目录时,就会打乱IIS的寻址逻辑。

一、修正Visual Studio发布目标路径
嵌套问题的根源通常在于发布配置中的“目标位置”设置过于深入。
调整站点路径:在Visual Studio的发布配置文件(.pubxml)中,检查Site Path或目标位置。如果你的IIS站点根目录是C:\inetpub\wwwroot\myblazor,那么发布目标应指向此父级目录,而不是指向其中的 wwwroot 子文件夹。
逻辑原理:blazor在编译后会自动生成一个 wwwroot 文件夹用于存放静态资源。如果发布目标直接设为服务器上的 wwwroot,最终路径就会变成 .../wwwroot/wwwroot。
二、重新配置IIS物理路径
如果文件已经上传且不想重新发布,可以直接在服务器端调整IIS的指向。
定位物理路径:打开IIS管理器,选中对应的站点,点击右侧的“高级设置”。
修改路径:“物理路径”直接指向包含 web.config 文件的那个层级。
验证文件结构:正确的目录结构应当是点击进入物理路径后,直接看到 wwwroot 文件夹和 bin 文件夹,而不是另一个嵌套的目录。


三、清理部署残留资产
为了彻底解决路径混乱问题,建议在发布设置中开启“自动清理”功能。
启用删除功能:在发布设置的“设置”选项卡下,展开“文件发布选项”,勾选“在发布前删除所有现有文件”。让旧的、错误的嵌套文件夹被物理删除,防止新旧配置冲突。
检查web.config:发布后的根目录下存在 web.config,这个文件负责告诉IIS如何通过ASP.NET Core模块启动blazor应用。
执行清理安装并重新定义发布路径是恢复站点响应最直接的手段。如果调整后依然无法访问,请通过命令提示符执行 iisreset 重启服务,以刷新目录句柄。






