開發我的第一個SignalR原型,用於演示給我公司。SignalR - 「接收調用結果前連接斷開」例外
問題我試圖調用服務器函數'GetChatUsers'時遇到的問題是,當我通過JS調用該方法時,我收到一個異常,'在調用結果收到之前連接斷開連接'服務器執行'ChatUser'的'Return'。目的。
我對該方法使用了同步調用,並且我已經逐步完成請求以確保返回一個IEnumerable對象。一旦服務器實際傳遞給客戶端,客戶端就會輸入方法調用的'.fail'方法,並顯示異常。我不知道爲什麼發生這種情況,但我已經建立了服務器端,類似於如何爲「GetAllStocks」的要求建在這裏客戶方邏輯... http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-server
這裏是我的服務器代碼...
using System.Linq;
using System.Web;
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;
using UMARepository.DataModels;
namespace UMAChatHub.Service
{
public class ChatHub : Hub
{
public IEnumerable<ChatUsers> GetChatUsers()
{
return UMARepository.Service.ChatService.GetChatUsers();
}
}
}
JS/JQuery的...
var getChatUsers = function() {
var umaChatHubProxy = $.connection.chatHub;
umaChatHubProxy.connection.start().done(function() {
umaChatHubProxy.server.getChatUsers().done(function(users) {
$.each(users, function() {
console(this.firstName);
});
}).fail(function(ex) {
console(ex.message);
});
});
};
這是行不通的:return UMARepository.Service.ChatService.GetChatUsers()。ToList(); – War
我在考慮如果在返回嘗試之前已經執行了查詢,那麼返回一個實體集應該不成問題。奇怪的是,除非返回調用導致引用在返回類型中被抓取。 – War
值得注意的是,在「dbContext.Configuration.LazyLoadingEnabled = false; dbContext.Configuration.ProxyCreationEnabled = false;」的情況下,這應該仍然有效。關閉EF中的延遲加載/代理類型...但在測試後,我發現它不是 – War