0

我正在尝试向 ElmahR 仪表板页面添加一些自定义功能并遇到一些问题。我已经开始了一个新项目,添加了 ElmahR 仪表板 NuGet 包。配置了所有源应用程序,并且一切正常。

现在我想向仪表板页面添加一些自定义功能。作为其中的一部分,我需要向仪表板页面添加一些 UI、新的 Hub、JavaScript 等。自定义功能与错误日志无关。这是完全不同的。这是我们希望将其添加到仪表板页面的内容。我添加了新的 Hub、JavaScript、HTML 标记,但它没有按预期工作。

我遇到了以下问题:

  1. 当我尝试访问 /signalr/hubs 时,我收到 404 Not found 错误。我在网上搜索了这个错误,如果您没有配置 Hub 路由,通常会发生这种错误。我试图在 global.asax 文件中添加 RouteTable.Routes.MapHubs() 。但是它说名为“signalr.hubs”的路由已经在路由集合中。有道理,因为我使用的是 ElmahR,并且因为它依赖于 SingalR,所以它已经将它添加到路由集合中。那么 ElmahR 应用程序中 /singalr/hubs 的路径是什么?在您的标准 asp.net 应用程序中使用 signalR 时,到集线器的通常路径是 /signalr/hubs 但使用 ElmahR 时它是什么路径?
  2. 我在尝试访问 hub.client 的行收到 JavaScript 错误“Uncaught TypeError: Cannot read property 'client' of undefined”。我猜它失败了,因为它无法找到我添加的新集线器。

如果我将集线器、关联的 JavaScript 和 HTML 复制到不同的 ASP.NET MVC 项目,一切正常。由于某些原因,它不适用于使用 ElmahR 的项目。我知道 Hub 和 JavaScript 中的代码没有任何问题,因为它适用于标准 ASP.NET MVC 项目。基本上我想做的就是在使用 ElmahR 的项目中添加一个 singalR 集线器。此外,我似乎无法在使用 ElmahR 的应用程序中找出 Hubs 的 URL 路径。通常路径是 /signalr/hubs

更新:

经过进一步调查,我找到了 ElmahR 仪表板应用程序中集线器的路径。它是 /signalr101/hubs。但是,当请求这个时,它会出错:“未捕获的错误:SignalR:JavaScript Hub 代理生成已被禁用”。似乎 ElmahR 会禁用 JavaScript 代理,可能是通过将应用程序的 IConfigurationManager 的 DisableJavaScriptProxies 属性设置为 true ( https://github.com/SignalR/SignalR/pull/1222 )。我认为正因为如此,我在尝试访问 hub.client 的行中收到“未捕获的类型错误:无法读取我的 JavaScript 中未定义的属性‘客户端’。如果 JavaScript 代理被禁用,那么我是否有任何额外的工作必须在我的 JavaScript 和 Hub 中进行操作,这样我就不会收到这个 JavaScript 错误。

4

0 回答 0