2012-02-10 83 views
0

我有一個網站啓動並運行。像往常一樣,我今天做了一個簡單的服務更改,重新編譯並上傳到生產環境。然後,我有一個奇怪的安全異常的說法:安全例外WCF

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個小時後,我放棄了,並在這裏貼出了問題。

有什麼想法?

回答

1

,我發現我的情況回答了!

我改變了我的WCF實現該訣竅2級的變化,所以我不知道到底是什麼解決它,但它可能是他們的組合:

  1. 第一,我已經注意到,新字段,我添加了什麼配置爲「拋出異常」NULL值。把它改爲「空」非常重要,所以服務在這種情況下不會拋出任何異常。但錯誤消息不適合此錯誤,因爲「空錯誤」將被排除。

  2. 我做的另一件事是 - 從存儲過程獲取DataTable而不是「硬編碼」的sql語句。

在我看來,後者的伎倆,因爲它似乎對我更涉及到安全問題,但它只是一個假設,作爲第一步是做的非常重要的一步。

就是這樣。它現在有用,謝謝你的回覆,希望我的回答能幫助別人。

2

這不是一個錯誤。 可能您試圖在只允許PartialTrust的主機上運行需要FullTrust的應用程序。

尤其是在WCF中,一些綁定(如NetTCP)不支持部分信任級別並且需要完全信任級別。

所以,你需要知道哪些信任級別的應用程序所需,然後讓它發生在您的服務器:)

+0

我不知道「信任級別」是什麼。特別是因爲我從不使用這個屬性。 – Yaniv 2012-02-12 06:10:55