SignalR - “在收到调用结果之前断开连接”异常

时间:2014-03-13 15:56:12

标签: signalr signalr-hub

为我的公司开发我的第一个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);
        });
    });
};

1 个答案:

答案 0 :(得分:4)

答案终于打了我一块砖头。

由于我试图返回实体数据对象而不是POCO对象,因此发生了“在收到调用结果之前断开连接”的异常。

我通过创建DTO并使用Automapper从实体映射到DTO对象来解决此问题。我返回该对象而不是Entity对象,并且不再出现错误。