2017-01-19 2 views
3

Petapoco의 다중 poco 쿼리를 사용하려고합니다.Petapoco : 작업으로 인해 런타임이 불안정해질 수 있습니다.

.NET 4.6.1을 실행하는 내 로컬 컴퓨터에서 코드가 제대로 작동하지만 .NET 4.5를 사용하는 호스팅에 배포 할 때 System.Security.VerificationException이 발생합니다.

Snipppet는 PetaPoco/Database.cs:2253

while (true) 
{ 
    TRet poco; 
    try 
    { 
     if (!r.Read()) 
      break; 
     poco = factory(r, cb); // <-- The exception happens here 
    } 
    catch (Exception x) 
    { 
     if (OnException(x)) 
      throw; 
     yield break; 
    } 

    if (poco != null) 
     yield return poco; 
    else 
     bNeedTerminator = true; 
} 

에서 "CB"는 포항 강판을지도 할 수있는 콜백이지만, 인수를 위해 내가 만든 그것은 단지를 통해 제공된 객체 반환 :

public Person MapRow(Person person, Category category, Country country) { 
    return person; 
} 

다음과 같은 메소드를 호출합니다.

db.Query<Person>(
    new[] { typeof(Person), typeof(Category), typeof(Country) }, 
    new PersonRelator().MapRow, 
    sql 
); 

이 예외가 던져지는 단서?

+0

"작동으로 인해 런타임이 불안정해질 수 있습니다"라고 생각하면 .NET Framework 및/또는 JIT 컴파일러에서 버그가 있음을 나타냅니다. 신뢰할 수없는 코드를 실행하려고하면 오류가 발생하지 않습니다. 오른쪽의 "관련"사이드 바에있는 관련 질문을 검색 할 수 있지만 웹 호스트를 64 비트 OS로 업그레이드하려고 시도하는 것이 가장 좋습니다. .NET 4.6.1에서 문제가 해결되는지 확인하십시오. –

답변

2

저는 이것이 호스팅 환경이 중간 신뢰로 설정 되었기 때문이라고 생각합니다. PetaPoco는 일반 작업 중에 IL 코드를 생성하기 때문에 중간 트러스트 호스팅 환경에서는이를 허용하지 않으므로 예외가 발생합니다.

+0

"작동으로 인해 런타임이 불안정해질 수 있습니다."라는 오류 메시지가 표시됩니다. 그 오류는 뭔가 잘못되었다는 것을 의미합니다. –

+1

'중간'신뢰에서 '완전'신뢰로 변경하면 매력처럼 작동합니다! (높게 설정하는 것만으로도 충분할 수 있습니다). – AndreFeijo