2011-09-01 2 views
0

많은 블로그에 이어 다음 코드가 있습니다. 그러나 이벤트 처리기로 등록하고 SharePoint 타이머 서비스를 다시 시작하면 목록에 전자 메일을 보낼 때 전자 메일이 더 이상 표시되지 않고 아래 오류가 나타납니다. SharePoint 2010 전자 메일 이벤트 처리기에서 "파일 또는 어셈블리를로드 할 수 없습니다 ..."라는 오류 메시지가 나타납니다.

내가 시도 :

  • 배포하기 전에 어셈블리 버전마다 변경.
  • IIS, SharePoint 타이머 서비스 다시 시작.
  • 내 IT 부서에서 GAC의 내 어셈블리에 "사용자"계정 권한을 부여해야했습니다 (다른 블로그가 제안했습니다).

코드 :

public class EventReceiver1 : SPEmailEventReceiver 
{ 
    /// <summary> 
    /// The list received an e-mail message. 
    /// </summary>  
    public override void EmailReceived(SPList oList, SPEmailMessage oMessage, string strReceiverData) 
    { 
     SPListItem oListItem = oList.Items.Add(); 
     oListItem["FaxNumber"] = oMessage.Headers["Subject"]; 
     //oListItem["Body"] = oMessage.HtmlBody; 
     oListItem["MessageBody"] = oMessage.Headers["Subject"]; 
     oListItem.Update(); 
    } 
} 

오류 :

파일이나 어셈블리를로드 할 수 없습니다 'TestEventReceiverProject을, 버전 = 1.0.0.0, 문화 = 중립, PublicKeyToken은 = defdab4ceab73dcb' 또는 종속성 중 하나가 될 수 있습니다. 시스템이 지정된 파일을 찾을 수 없습니다. I SP가 서비스를 다시 시작 때도

, I 오류 GET "에서는 Owstimer.exe에서 발생한 처리되지 않은 예외 (System.Security.Cryptography.CrytographicException ') [6760]"

답변

0

열려있는 프로젝트 속성 창 . 빌드 탭 선택 '모든 CPU'로 변경하십시오. 변경 사항을 저장하십시오. 프로젝트를 컴파일하고 배포하십시오.

어셈블리가 GAC에 있고 Visual Studio 디버거가 디버깅 기호 (일명 : * .pdb)를 볼 수없는 경우. 모든 PDB가있는 심볼 저장소를 설정하는 문제를 겪지 않았다면 디버깅 심볼을 어셈블리와 동일한 위치에 배치해야합니다. 트릭은 GAC에 DLL이 들어있는 폴더를 찾는 것입니다.

c : \ windows \ assembly 폴더는 실제 폴더가 아니며 가상 폴더입니다. REAL 폴더로 가려면 다음을 수행하십시오.

시작»실행 % systemroot % \ assembly \ gac [Enter] 그러면 GAC 폴더가 열립니다. 자, 다음과 같은 폴더를 찾을 때까지 주위를 찌를 수 있습니다 (하나의 폴더를 뛰어 올라 MSIL 폴더로 뛰어 들어야 할 수도 있습니다) : [assembly file name -.DLL extention] [#. #. # .__] [어셈블리 공개 키 토큰].

폴더를 찾으면 폴더를 열면 어셈블리가 표시되고 어셈블리가 제대로 배포되었는지 확인할 수 있습니다. 끌어서 놓기 만하면됩니다.

수행 및 IIS 재설정, 타이머 작업 다시 설정 및 다시 테스트하십시오.

관련 문제