开发我的第一个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