部署至IIS的Blazor WebAssembly页面按F5出现Error 404 not found问题
Blazor WebAssembly部署IIS后刷新页面404的解决方法
问题根源:Blazor WebAssembly属于单页应用(SPA),所有路由逻辑由客户端处理。当在Counter页面按F5刷新时,浏览器会直接向IIS请求
/Counter路径,但IIS在网站物理目录中找不到对应文件,因此返回404错误。解决步骤:
- 安装IIS URL重写模块:
IIS本身不自带路由重写能力,需先安装官方的URL重写模块。打开IIS管理器,检查左侧模块列表是否有「URL重写」,若无则下载安装该组件。 - 配置web.config文件:
在项目的wwwroot目录下创建或修改web.config,添加重写规则,将所有非物理文件/目录的请求转发到index.html,交由Blazor客户端路由处理。配置内容如下:<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <staticContent> <mimeMap fileExtension=".blat" mimeType="application/octet-stream" /> <mimeMap fileExtension=".dll" mimeType="application/octet-stream" /> <mimeMap fileExtension=".dat" mimeType="application/octet-stream" /> <mimeMap fileExtension=".pdb" mimeType="application/octet-stream" /> <mimeMap fileExtension=".wasm" mimeType="application/wasm" /> <mimeMap fileExtension=".woff" mimeType="application/font-woff" /> <mimeMap fileExtension=".woff2" mimeType="application/font-woff2" /> </staticContent> <rewrite> <rules> <rule name="Blazor Routes" stopProcessing="true"> <match url=".*" /> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="index.html" /> </rule> </rules> </rewrite> </system.webServer> </configuration> - 验证部署结果:
将包含该web.config的wwwroot目录部署到IIS站点,重启站点后,刷新Counter页面即可正常加载。
- 安装IIS URL重写模块:
额外注意事项:
- 确保IIS站点的应用程序池设置为「无托管代码」,因为Blazor WebAssembly是纯客户端应用,不需要.NET服务器托管。
- 若通过Visual Studio发布项目,通常会自动生成正确的
web.config,但手动部署时需确认该文件存在。
内容的提问来源于stack exchange,提问作者jos3m
相关产品推荐
相关产品推荐

