Blazor SSR(.NET7.0)发布至IIS后razor.js文件404问题求助
解决Blazor SSR发布至IIS后razor.js文件404的问题
检查razor.js文件的复制属性
右键项目里的razor.js文件,打开属性面板,把复制到输出目录设为始终复制或如果较新则复制。本地调试时文件在源码目录能被访问,但发布时如果没开这个配置,文件不会被打包到输出目录,自然找不到。开启IIS的静态文件功能
打开服务器的服务器管理器,添加Web服务器(IIS)角色下的静态文件功能。razor.js属于静态资源,IIS默认没开这个功能的话,没法返回这类文件。配置IIS的MIME类型
打开IIS管理器,找到对应站点,进入MIME类型,添加新类型:- 扩展名:
.js - MIME类型:
application/javascript
虽然.js一般是默认存在的,但如果服务器配置被改过,可能缺失这个类型,导致IIS识别不了文件,返回404。
- 扩展名:
确认发布包里有目标文件
去项目发布输出目录(默认是bin\Release\net7.0\publish)看看,有没有对应的xxxx/xxxx.razor.js文件。如果没有,回到项目右键文件,选包含在项目中,确保文件被纳入发布范围。检查js文件的引用路径
确认Razor页面里引用razor.js的路径没错,别用错相对路径。推荐用~/开头的根路径,比如:<script src="~/xxxx/xxxx.razor.js"></script>本地开发服务器的路径解析逻辑和IIS不一样,本地没报错的路径到IIS里可能就失效了。
核对IIS站点的物理路径
确保IIS站点的物理路径指向的是发布包的根目录,不是项目源码目录。路径指错了的话,IIS根本找不到对应的资源文件。
内容的提问来源于stack exchange,提问作者user24300317
相关产品推荐
相关产品推荐

