2012-12-12 3 views
2

웹 역할이 하나이고 작업자 역할이 하나 인 프로젝트가 있습니다. 로컬로 테스트 할 때마다 내 웹 및 작업자 역할이 의도 한대로 작동합니다. 로컬 버전은 Azure Compute Emulator를 사용하지만 서비스 버스 대기열과 메시지 대기열은 라이브 클라우드 버전을 사용합니다. 그러나 클라우드 서비스 작업자 역할은 특정 작업 중에 충돌하는 경향이 있습니다. 이로 인해 인스턴스가 "Recycle"되고 메시지가 Azure Service Bus 큐에 걸립니다. 클라우드 서비스가 로컬에서 실행되어 메시지를 성공적으로 처리 한 다음 대기열에서 제거 할 때까지는 아닙니다. 역할이 작동하더라도 Azure는 대시 보드에서 종종 직원 역할이 "건강에 좋지 않은"상태라는 것을 알립니다.Azure 클라우드 서비스 작업자 역할 크래시 및 건강에 해로운 것

Unhandled Exception: System.Reflection.ReflectionTypeLoadException

나는이 내 프로젝트에서 예외 처리를 추가하고 클라우드에 업데이트를 배포 한 후 다시 시도했습니다

하지만 같은 일이 일어나고 유지 :

한 시점에서, 푸른 포털이 오류를 인쇄 . 내 프로젝트에 예외 처리를 추가 할 때 System.Reflection 라이브러리를 내 작업자 역할에 추가해야했지만 더 혼란 스러웠습니다. 내 프로젝트에서 원래 사용하지 않은 라이브러리에 대한 호출에 대해 오류가 발생하는 이유를 이해할 수 없습니다.

누구나이 문제의 원인에 대한 아이디어가 있습니까?

업데이트

:

나는 몇 가지 수동 디버깅을했고, 예외가 작업자 역할의 실행()에서 호출되는 것으로 나타났습니다. 문제를 일으키는 코드 줄에는 Entity Framework를 사용하여 데이터베이스를 호출하는 과정이 포함됩니다. 특정 라인은 다음과 같습니다 문제가 엔티티 프레임 워크 활성화 또는 푸른 서버에 제대로 구성되지 할 경우 내가 궁금하네요

Image imageEntity = db.Images.Find(ImgViewFromQueue.Id);

.

+0

[여기] (http://stackoverflow.com/q/7802061/649408) –

+0

에 나열된 오류가 있는지 확인할 수 있습니까? 해당 페이지에서 언급 한 모든 작업을 시도해 보았습니다. true에 대한 참조는 아무것도 수정하지 않았습니다. – TheKarateKid

+0

작업자 역할에 Linq 또는 ADO.NET을 사용하고 있습니까? –

답변

0

나는 OSFamily = 3 (Server 2012)에서 작업자 역할을 실행하는 비슷한 문제가있었습니다. 3에서 실행 중이며 2로 롤백 할 수있는 경우 작업자 역할이 올바르게 작동하는 것을 알 수 있습니다. 나는 Azure 지원 엔지니어의 도움을 받아 나의 질문에 대답했다. - Azure Worker Role runs on osFamily="2" (Server 2008R2) but Fails on osFamily="3" (Server 2012)

차이점 : OS Family 2에서 WaWorkerHost는 역할 초기화 프로세스에 의해 생성 된 임시 계정 (GUID 이름 포함)으로 실행 중이므로이 권한에는 특별한 권한이 있습니다. OS 제품군 3에서 WaWorkerHost는 "NETWORK SERVICE"계정으로 실행 중이며,이 계정에는 작업자 역할에 대한 일부 권한이 없습니다.

OSfamily 3이 있어야하는 경우 높은 권한으로 실행 해보십시오. 당신이 InelliTrace을 활성화하고 패키지를 다시 배포 할 수 있습니다

<Runtime executionContext="elevated" /> 
+0

내 프로젝트의 설정 파일은 OSFamily = 2를 사용하고 있고 Cloud 서비스가 Server 2008 R2에서 실행 중이므로 다른 문제가 있다고 생각합니다. – TheKarateKid

+0

인스턴스로 RDP하고 이벤트 로그를 확인할 수 있습니다. 여기에서 발생한 오류는 물론 전체 스택 추적으로 다른 위치에서 로깅하는 오류도 포함하십시오. – viperguynaz

+0

설정 파일이 아니라 설정 파일에 있습니다. 그러므로 csdef 파일에 있습니다. –

0

확실하지 경우, 잘하면 당신이 당신의 시스템의 실제 예외를 발견 할 것이다 : 당신의 cscfg 파일에서 <WorkerRole> 요소에 자식을 추가합니다. 단지 2 센트.

관련 문제