我正在尝试将 SignalR 实现到我的 ASP.Net“网站项目”中。 (这是一个现有的应用程序,它是一个网站项目,不能更改为 Web 应用程序。)
当我尝试运行 SignalR 示例代码时,出现以下错误。 (这是基本的股票代码示例。只是想在开始将其实现到现有代码中之前验证我是否已正确设置所有内容。)
这是我得到的错误
Unhandled exception at line 71, column 5 in http://localhost:49218/SchoolFinancial/SignalR.Sample/SignalR.StockTicker.js
0x800a138f - Microsoft JScript runtime error: Unable to get value of the property 'client': object is null or undefined
这是引发错误的 javascript
// Add client-side hub methods that the server will call
$.extend(ticker.client, {
updateStockPrice: function (stock) {
var displayStock = formatStock(stock),
$row = $(rowTemplate.supplant(displayStock)),
$li = $(liTemplate.supplant(displayStock)),
bg = stock.LastChange === 0
? '255,216,0' // yellow
: stock.LastChange > 0
? '154,240,117' // green
: '255,148,148'; // red
$stockTableBody.find('tr[data-symbol=' + stock.Symbol + ']')
.replaceWith($row);
$stockTickerUl.find('li[data-symbol=' + stock.Symbol + ']')
.replaceWith($li);
$row.flash(bg, 1000);
$li.flash(bg, 1000);
},
marketOpened: function () {
$("#open").prop("disabled", true);
$("#close").prop("disabled", false);
$("#reset").prop("disabled", true);
scrollTicker();
},
marketClosed: function () {
$("#open").prop("disabled", false);
$("#close").prop("disabled", true);
$("#reset").prop("disabled", false);
stopTicker();
},
marketReset: function () {
return init();
}
});
这是 Web.Config 设置更改,允许 SignalR 与网站项目一起使用
(这是 Web.Config 的以下部分的内部)
<modules runAllManagedModulesForAllRequests="true">
</modules>
我是使用 SignalR 的新手,根据我在上一篇文章中发现的内容,如果我能让它工作,这应该可以解决我的问题。
因此,如果有人有在 ASP.Net 网站项目中使用 SignalR 的经验,我将非常感谢任何建议/推荐。
不确定这是否重要,但我正在使用 Visual Studio 2012 (ASP.Net/C#) 并且我的网站使用 .Net Framework 4.5 版本。
预先感谢您的帮助...
最佳答案
您收到此错误的原因可能是以下任一原因:-
1) yourbaseurl/signalr/hubs 给出 404。您可以在页面加载后在 chrome 控制台中验证这一点。如果您收到此错误,您需要确保已映射集线器路由。使用
RouteTable.Route.MapHubs()
在您的 global.asax 应用程序中启动或使用某些启动注入(inject)器(例如 WebActivatorEx)。
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
RouteTable.Routes.MapHubs();
}
2) 所有与SIignalr相关的dll都是兼容版本。如果您安装了库包管理器控制台,这不会成为问题。
3) 如果上述步骤不是问题,则问题在于客户端代理未正确生成。这意味着,如果您点击 yourbaseurl/signalr/hubs,您应该能够看到注册的集线器,其名称与驼峰式大小写的 c# 集线器类名相同,并且
proxies.stockTicker.client
初始化并
proxies.stockTicker.server
使用与 c# HubProxy 中声明的函数名称相同的函数名称进行定义。所有这些都体现在以下原型(prototype)声明中。
$.hubConnection.prototype.createHubProxies
4) 如果您无法获取按照步骤 3 生成的代理,请尝试将 SignalR.StockTicker 中的类文件放入 AppCode。
注意:- 我刚刚尝试并让示例在 Asp.Net 4.5 网站上运行。
祝一切顺利!!
关于javascript - 将 SingalR 示例实现到 ASP.Net 网站应用程序中 — JS 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15485804/