Исключение безопасности WCF - PullRequest
0 голосов
/ 10 февраля 2012

У меня есть веб-сайт, который работает и работает. сегодня, как обычно, я сделал простое изменение в Сервисе, перекомпилировал его и загрузил в производство. затем я получил странное исключение безопасности, говорящее:

Server Error in '/' Application.

Security Exception

Description: The application attempted to perform an operation not allowed by the security policy.  To grant this application the required permission please contact your system administrator or change the application's trust level in the configuration file. 

Exception Details: System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.ReflectionPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace: 


[SecurityException: Request for the permission of type 'System.Security.Permissions.ReflectionPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.]
   System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet) +0
   System.Security.CodeAccessSecurityEngine.Check(CodeAccessPermission cap, StackCrawlMark& stackMark) +31
   System.Security.CodeAccessPermission.Demand() +46
   System.Reflection.Emit.DynamicMethod.PerformSecurityCheck(Module m, StackCrawlMark& stackMark, Boolean skipVisibility) +248
   System.Reflection.Emit.DynamicMethod..ctor(String name, Type returnType, Type[] parameterTypes, Module m, Boolean skipVisibility) +49
   System.Runtime.Serialization.CodeGenerator.BeginMethod(Type returnType, String methodName, Type[] argTypes, Boolean allowPrivateMemberAccess) +53
   System.Runtime.Serialization.CodeGenerator.BeginMethod(String methodName, Type delegateType, Boolean allowPrivateMemberAccess) +131
   System.Runtime.Serialization.CriticalHelper.GenerateClassReader(ClassDataContract classContract) +141

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.272

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

через 6 часов я сдался и выложил здесь проблему.

есть идеи?

Ответы [ 2 ]

2 голосов
/ 10 февраля 2012

Это не ошибка.Возможно, вы пытаетесь запустить приложение, которое требует FullTrust на хостинге, которое допускает только PartialTrust.

Особенно с WCF, некоторые из привязок (например, NetTCP) просто не поддерживают уровень частичного доверия и требуют полного доверия.

Таким образом, вам нужно знать, какой уровень доверия требуется вашему приложению, а затем сделать это на ваших серверах:)

1 голос
/ 12 февраля 2012

я нашел ответ для своего дела!

я сделал 2 изменения в моем WCF, которые сделали свое дело, поэтому я не знаю точно, что решить, но это может быть смесь из них:

  1. во-первых, я заметил, что в новом поле, которое я добавил, настроено «выбрасывать исключение» для значений NULL. очень важно изменить его на «пустой», чтобы в этом случае служба не создавала никаких исключений. но сообщение об ошибке не подходит для этой ошибки, так как "нулевая ошибка" будет исключена.

  2. другая вещь, которую я сделал, - получение DataTable из хранимой процедуры, а не как «жестко запрограммированный» SQL-оператор.

мне кажется, что последний сделал свое дело, так как мне кажется, что он больше связан с проблемой безопасности, но это всего лишь предположение, поскольку первый шаг был очень важным шагом.

вот и все. теперь это работает, спасибо за ваш ответ, надеюсь, мой ответ когда-нибудь кому-нибудь поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...