1

SL4 응용 프로그램에서 사용하고있는 WCF RIA 서비스에 이상한 작은 문제가 있습니다. 다음은 가지고있는 버튼 클릭 핸들러 코드입니다.SL4 WCF RIA 쿼리 문제 : 실제로 완료되기 전에 "완료되었습니다"?

private void btnTest_Click(object sender, RoutedEventArgs e) 
    { 
     LanguageContext context = new LanguageContext(); 
     LoadOperation<Language> op = context.Load(context.GetLanguagesQuery()); 

     op.Completed += (obj, args) => 
      { 
       if (!op.HasError) 
       { 
        System.Threading.Thread.Sleep(500); 
        MessageBox.Show(context.Languages.FirstOrDefault().DisplayName); 
       } 
      }; 
    } 

핸들러에는 절전 모드 호출이 있습니다. 해당 절전 호출이 없으면 서버에 요청을 전송할 때 전송 수준 오류가 발생했습니다 (공급자 : 공유 메모리 공급자, 오류 : 0 - 프로세스가 파이프의 다른 끝에 없음). 이 코드가 "Completed"핸들러에 있다면, 실제로 거기에 도착할 때까지 완료되었다고 생각했습니다. 수면() 없이는 왜 죽을까요? BTW, Sleep()은 프로덕션을위한 옵션이 아니며 단지 문제 해결 도구 일뿐입니다.

+0

BTW, 이것은 EF 모델에서 SQL Server 2008 R2 DB에 대해 작동하는 도메인 서비스입니다.그 중 하나가 중요한 경우. –

+0

유용하다면 SQL Server에서 명명 된 파이프를 사용할 수 있습니다. 다음은 연결 문자열입니다. 데이터 원본 = .; 초기 카탈로그 = TDS, 통합 보안 = True, MultipleActiveResultSets = True –

답변

1

그래서 연결 문자열에 "pooling = false"를 추가하면 모든 것이 작동합니다. 그러나 나는 그 대답을 정말로 좋아하지 않는다. 연결 풀링은 좋은 일입니다. 그것을 남겨두고 일을 계속하는 방법이 있습니까?

+0

나는 pooling = false를 사용해야합니다. 다른 접근법을 찾지 못했습니다. –

0

또한이 문제를 재현 할 수 있습니다.

예를 들어 두 번 연속해서 실행하면 두 번째 실패 할 것이라는 단위 테스트가 있습니다.

이 단위 테스트는 몇 가지 수행
1 방울을 4.1 DbContext Initiailzer
2. Silverlight 응용 프로그램을
3. 실버 라이트 응용 프로그램에서 버튼을 시작합니다 사용자 정의 엔티티 프레임 워크를 사용하여 데이터베이스를 다시 작성

이 시점에서 Silverlight 응용 프로그램은 wcf ria 서비스를 호출하여 방금 생성 된 데이터베이스를 쿼리합니다.
그러나 단위 테스트가 두 번째 실행될 때마다 동일한 오류가 발생합니다.
예를 들어 버튼을 다시 클릭하면 오류가 즉시 사라집니다.

내 연결 문자열에 "Pooling = False"를 설정해도 내 문제가 해결되지 않았습니다.

그러나 데이터베이스를 만든 후에 silverlight 응용 프로그램과 ria 서비스를 호스팅하는 웹 서버를 다시 시작하여 문제를 해결할 수있었습니다.

내 경우에는 Cassini Dev Web Server v4를 사용하고 iis 대신 해당 웹 서버에서 테스트를 실행하기로 결정했습니다.

윈도우 7 궁극적 인 x64
비주얼 스튜디오 2010 SP1
엔티티 프레임 워크 4.1
WCF RIA 서비스 SP1에 대한 실버 라이트 4
실버 라이트 4
MSTEST

편집 :
엔티티 프레임 워크 4.1 업데이트 1 에는 SQL 인증을 사용할 때 연결 문자열에서 '보안 정보 지속 = True'를 지정하지 않아도되는 버그 수정이 포함되어 있습니다.
http://www.microsoft.com/download/en/details.aspx?id=26825

버그가 관련되어 있는지, 아직이 문제를 해결할 수 있는지 확실하지 않습니다.

관련 문제