wx_2580 2024-11-19 11:29 采纳率: 0%
浏览 13

Failed to load resource: the server responded with a status of 404 (Not Found)signalr/negotiate?

hubs:1

   Failed to load resource: the server responded with a status of 404 (Not Found)

signalr/negotiate?clientProtocol=2.1&connectionData=%5B%7B%22name%22%3A%22myhub%22%7D%5D&_=1731641169421:1

   Failed to load resource: the server responded with a status of 404 (Not Found)

CostSetHome.js:475 Error: Error during negotiation request.

  • 写回答

1条回答 默认 最新

  • 越重天 新星创作者: Java技术领域 2024-11-20 11:21
    关注

    本答案参考 多次询问 ChatGPT-3.5 后选择的最佳回答,若是满意,还请采纳,谢谢

    这看起来是在使用SignalR(一种用于ASP.NET的库,用于在服务器和客户端之间进行实时通信)时遇到的问题。

    一、404 (Not Found)错误的可能原因

    1. 路由配置错误

      • 在C#的ASP.NET应用程序中,如果使用SignalR,需要正确配置SignalR的路由。例如,如果在启动配置(Startup.cs)中没有正确设置SignalR的终结点映射,就可能导致这种情况。
      • 示例:
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
          // 如果这里没有正确配置SignalR的路由
          // app.UseEndpoints(endpoints =>
          // {
          //     endpoints.MapHub<MyHub>("/signalr");
          // });
        }
        
      • 这里的MyHub是自定义的SignalR中心(hub),如果没有正确映射到/signalr(这里只是示例路径,与你遇到问题中的signalr/negotiate相关路径类似)这样的路径,客户端请求就会找不到资源而返回404。
    2. 资源不存在或被移动

      • 如果服务器端的SignalR相关资源(例如,处理协商请求的逻辑所在的文件或组件)被意外删除、移动或者没有正确部署,就会出现404错误。
      • 假设在服务器上有一个名为SignalRNegotiateHandler.cs的文件,它负责处理协商请求。如果这个文件在部署过程中丢失了,那么当客户端请求signalr/negotiate时就会得到404响应。
    3. 版本不兼容

      • SignalR的客户端和服务器端版本不匹配也可能导致这个问题。例如,客户端使用的是较新的协议版本(如clientProtocol = 2.1在你的错误信息中),但服务器端不支持这个版本的协议,可能会在协商过程中出现问题,导致找不到正确的处理资源而返回404。

    二、CostSetHome.js:475 Error: Error during negotiation request.相关

    1. JavaScript中的错误关联
      • CostSetHome.js文件的第475行出现错误,这个错误表明在JavaScript端进行SignalR协商请求时出了问题。这很可能是由于前面提到的服务器返回404导致的。因为当服务器无法正确响应协商请求(signalr/negotiate)时,JavaScript端的SignalR库无法完成协商过程,从而在这个地方报错。
      • 例如,如果在JavaScript中是这样初始化SignalR连接的:
        const connection = new signalR.HubConnectionBuilder()
         .withUrl('/signalr')
         .build();
        connection.start()
         .then(() => {
              // 连接成功后的操作
          })
         .catch(err => {
              console.error('Error starting connection:', err);
          });
        
      • 如果服务器端的/signalr相关资源(特别是协商部分)有问题(如404错误),那么connection.start()就会失败,在catch块中就会捕获到错误,这可能与CostSetHome.js:475处的错误相关。
    评论

报告相同问题?

问题事件

  • 创建了问题 11月19日