按照ASP.NET Core SignalR入门文档操作出现signalr.js 404错误
解决ASP.NET Core SignalR 2.1中signalr.js 404找不到的问题
我刚帮你梳理了这个问题的常见原因和解决办法,在.NET Core 2.1环境下,SignalR的客户端JS库不会自动随项目创建而包含,很容易出现这种404的情况,下面一步步来解决:
一、先确认SignalR客户端库有没有正确安装
.NET Core 2.1的SignalR客户端需要手动安装,推荐两种方式:
1. 用npm安装(适合熟悉前端工具的同学)
- 打开终端进入项目根目录,先初始化npm(如果项目还没初始化的话):
npm init -y - 安装对应2.1版本的SignalR客户端:
npm install @aspnet/signalr@2.1.1 - 安装完成后,去
node_modules/@aspnet/signalr/dist/browser目录找到signalr.js,把它复制到项目的wwwroot/lib/signalr/文件夹里(没有这个文件夹就手动创建一个)。
2. 用LibMan安装(更适合.NET开发者)
- 在项目根目录新建一个
libman.json文件,内容填下面这段:{ "version": "1.0", "defaultProvider": "cdnjs", "libraries": [ { "library": "@aspnet/signalr@2.1.1", "destination": "wwwroot/lib/signalr/" } ] } - 如果还没装LibMan工具,先全局安装:
dotnet tool install -g Microsoft.Web.LibraryManager.Cli - 然后运行还原命令,库就会自动下载到指定目录:
libman restore
二、检查HTML里的引用路径对不对
打开你的页面,看看引用signalr.js的代码,要和文件实际位置匹配:
- 如果是Razor视图,用波浪线路径:
<script src="~/lib/signalr/signalr.js"></script> - 如果是静态HTML文件,用根相对路径:
<script src="/lib/signalr/signalr.js"></script>
三、确认Startup.cs里的静态文件中间件配置对了
一定要在Startup.cs的Configure方法里先启用静态文件中间件,而且要放在SignalR的配置前面,不然静态文件访问不了:
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { // 其他中间件(比如异常处理)先放前面 app.UseStaticFiles(); // 这个必须有!负责托管wwwroot下的静态文件 app.UseSignalR(routes => { routes.MapHub<ChatHub>("/chatHub"); }); // 其他中间件(比如MVC)放后面 }
四、针对官方示例项目的补充说明
官方的示例项目通常不会把node_modules或者下载好的客户端库提交到Git上,所以你克隆下来后得自己按照上面的步骤安装客户端库,把signalr.js放到正确的目录里,再重新运行项目就不会报错了。
内容的提问来源于stack exchange,提问作者Geasi Puozzo
相关产品推荐
相关产品推荐

