2014-03-13 2 views
2

회사에 데모를위한 첫 번째 SignalR 프로토 타입 개발.SignalR - "호출 결과가 수신되기 전에 연결이 끊어졌습니다"예외

문제 'GetChatUsers'라는 서버 함수를 호출 할 때 JS를 통해 메서드를 호출 할 때 '호출 결과가 수신되기 전에 연결이 끊어졌습니다'라는 예외가 발생합니다. 서버는 'ChatUser'의 'Return'을 실행합니다. 목적.

메서드에 대한 동기 호출을 사용하고 있으며 반환되는 IEnumerable 개체가 있는지 확인하기 위해 요청을 단계별로 수행했습니다. 서버가 실제로 클라이언트에 전달되면 클라이언트는 메소드 호출의 '.fail'메소드를 입력하고 예외가 표시됩니다. 여기

http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-server 내 서버 코드 ...이다 ... 나는 이런 일이 왜 모르겠지만, 서버 측과 'GetAllStocks'에 대한 요청이 여기에 내장되는 방식과 유사 클라이언트 측 논리를 구축

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); 
     }); 
    }); 
}; 

답변

4

는 대답은 결국 벽돌의 톤처럼 날 때렸어요.

POCO 개체가 아니라 Entity Data 개체를 반환하려고했기 때문에 "호출 결과를 받기 전에 연결이 끊어졌습니다."예외가 발생했습니다.

DTO를 만들고 Automapper를 사용하여 엔티티에서 DTO 객체로 매핑하여이를 수정했습니다. Entity 개체 대신 해당 개체를 반환하고 오류가 더 이상 발생하지 않습니다.

+0

이 작동하지 않습니다. 반환 UMARepository.Service.ChatService.GetChatUsers(). ToList(); – War

+0

반환 시도 전에 쿼리가 실행 된 경우 엔티티 집합을 반환해도 문제가되지 않아야한다고 생각합니다. 반환 된 결과로 참조가 반환 된 형식으로 크롤링되지 않는 한 이상합니다. – War

+0

"dbContext.Configuration.LazyLoadingEnabled = false; dbContext.Configuration.ProxyCreationEnabled = false;"이 이벤트가 여전히 작동해야한다는 점은 주목할 가치가 있습니다. EF에서 게으른 로딩/프록시 유형을 끄려면 ... 그러나 이것을 테스트 한 후에 – War

관련 문제