我似乎在 ServiceStack 和 SignalR 之间有一个奇怪的问题。两种服务都工作正常,没有奇怪的活动,SignarlR Hub 成功加载并按预期工作。ServiceStack 通过 Google 进行身份验证,没有问题。
但是,一旦我使用 SS 登录该站点,一切都很好,当我导航到使用 SignalR 的页面时,问题似乎出现了。一旦 SignalR 的 javascript 初始化,它似乎会清除服务器上 ServiceStack 的所有会话信息。这意味着如果我刷新页面,我会被重定向回登录。但是,如果我按原样离开页面,SignalR 通知会按预期到达。
有人知道会发生什么吗?
我的简单代码基于 StockTicker 示例。这里是:
<HubName("salesTicker")> _
公共类 VerificationLogHub 继承 Hub 私有 ReadOnly _verificationTicker 作为 VerificationLogTicker
Public Sub New()
Me.New(VerificationLogTicker.Instance)
End Sub
Public Sub New(verTicker As VerificationLogTicker)
_verificationTicker = verTicker
End Sub
Public Function GetAllLogs() As IEnumerable(Of UI_GuestBook)
Return _verificationTicker.GetAllLogs()
End Function
Public Sub start()
_verificationTicker.StartMonitoring()
End Sub
Public Sub [stop]()
_verificationTicker.StopMonitoring()
End Sub
结束类
Ticker 类与 StockTicker 示例几乎相同,唯一的区别是,我从数据库中获取数据,显然不会生成随机股票价格。
这是让球滚动的页面javascript。
<script type="text/javascript">
$(function () {
var ticker = $.connection.salesTicker;
$.connection.hub.start().pipe(init);
function init() {
return ticker.server.getAllLogs().done(function (guestBooksLog) {
ticker.server.start();
if(guestBooksLog.length>0)
updateStats(guestBooksLog[0]);
});
}
$.extend(ticker.client, {
updateStockPrice: function (GuestBook) {
updateStats(GuestBook);
}
});
});
function updateStats(GuestBook) {
$('#spanLsRate').html((GuestBook.Rate * 100).toFixed(1));
$('#spanDcCount').html(GuestBook.TotalCount);
console.log("Stats updated...");
}