Исключение безопасности ASP MVC на среднем уровне доверия

#asp.net #asp.net-mvc-3

#asp.net #asp.net-mvc-3

Вопрос:

Эта строка кода :

 var user = users.SingleOrDefault(u => u.EmailAddress == form.EmailAddress);
 

где пользователи — это набор

 public class User
{
    [Key, Required]
    public string EmailAddress { get; set; }

    public string PasswordHash { get; set; }

    public string PasswordSalt { get; protected set; }
}
 

создает исключение при среднем уровне доверия.

Есть ли способ заставить его работать на этом уровне доверия?

Я пытался подписывать свои сборки ключом, но проблема все еще существует.

Я использую Entity Framework и ASP.NET 4.0.

Я не могу изменить уровень доверия (код работает нормально при полном доверии).

Вот стек исключений:

 SecurityException: Richiesta di autorizzazione di tipo 'System.Security.Permissions.ReflectionPermission, mscorlib, Version=4.0.0.0,    Culture=neutral, PublicKeyToken=b77a5c561934e089' non soddisfatta.]
System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMarkamp; stackMark, Boolean isPermSet)  0
System.Security.CodeAccessSecurityEngine.Check(CodeAccessPermission cap, StackCrawlMarkamp; stackMark)  31
System.Security.CodeAccessPermission.Demand()  46
System.Data.Common.Internal.Materialization.Translator.DemandMemberAccess()  50
System.Data.Common.Internal.Materialization.Shaper`1..ctor(DbDataReader reader, ObjectContext context, MetadataWorkspace workspace, MergeOption mergeOption, Int32 stateCount, CoordinatorFactory`1 rootCoordinatorFactory, Action checkPermissions, Boolean readerOwned)  165
System.Data.Common.Internal.Materialization.ShaperFactory`1.Create(DbDataReader reader, ObjectContext context, MetadataWorkspace workspace, MergeOption mergeOption, Boolean readerOwned)  93
System.Data.Objects.Internal.ObjectQueryExecutionPlan.Execute(ObjectContext context, ObjectParameterCollection parameterValues)  736
System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)  149
 System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator()  44
System.Linq.Enumerable.SingleOrDefault(IEnumerable`1 source)  184
System.Data.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__2(IEnumerable`1 sequence)  41
System.Data.Objects.ELinq.ObjectQueryProvider.ExecuteSingle(IEnumerable`1 query, Expression queryRoot)  59
System.Data.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute(Expression expression)  150
System.Data.Entity.Internal.Linq.DbQueryProvider.Execute(Expression expression)  102
System.Linq.Queryable.SingleOrDefault(IQueryable`1 source, Expression`1 predicate)  300
 

Комментарии:

1. Пожалуйста, добавьте исключение и трассировку стека к вашему вопросу.

2. Какая локальная ошибка возникает, если вы установили для своего доверия значение medium?

Ответ №1:

Что такое класс users? Это EF или ваш собственный? Если это ваше, добавьте AllowPartiallyTrustedCallersAttribute к нему.