为我的公司开发我的第一个SignalR原型用于演示。
问题I尝试呼叫服务器功能时遇到了问题,' GetChatUsers,'是当我通过JS调用方法时,我得到一个异常,'在收到调用结果之前,Connection已断开连接,'服务器执行' Return'之后立即执行' ChatUser。宾语。
我正在使用对该方法的同步调用,并且我已经逐步完成了请求,以确保返回了一个IEnumerable对象。一旦服务器实际传递给客户端,客户端就会输入“.fail”。方法调用的方法和异常显示。我不确定为什么会这样,但我已经构建了服务器端和客户端逻辑,类似于对GetAllStocks' 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);
});
});
};
答案 0 :(得分:4)
答案终于打了我一块砖头。
由于我试图返回实体数据对象而不是POCO对象,因此发生了“在收到调用结果之前断开连接”的异常。
我通过创建DTO并使用Automapper从实体映射到DTO对象来解决此问题。我返回该对象而不是Entity对象,并且不再出现错误。