2017-01-19 9 views
3

Я пытаюсь использовать многопоточный запрос Petapoco.Petapoco: Операция может дестабилизировать время выполнения

Код отлично работает на моей локальной машине, работающей .NET 4.6.1, но throws System.Security.VerificationException при развертывании на хостинг, который я использую, который работает .NET 4.5.

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

«Си-Би» является обратным вызовом для отображения Pocos, но ради аргумента я сделал это просто возвращает объект, который пришел через:

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-битной ОС (если это еще не так) и .NET 4.6.1 и посмотреть, устраняет ли это проблему. –

ответ

2

Я думаю, что это связано с тем, что среда хостинга настроена на средний уровень доверия. Поскольку PetaPoco генерирует IL-код во время обычных операций, среда доверия среднего доверия не позволит этого и будет генерировать исключение.

+0

Я сомневаюсь, что это приведет к появлению сообщения об ошибке «Операция может дестабилизировать время выполнения». Эта ошибка означает, что что-то пошло не так. –

+1

Изменение его от «среднего» доверия до «полного» доверия заставило его работать как шарм! (достаточно установить его на высокий уровень). – AndreFeijo