2013-11-27 7 views
7

Versuch durch Sicherheit transparente Methode 'PayPal.UserAgentHeader.get_OperatingSystemFriendlyName()' für den Zugriff auf sicherheitskritische Methode 'System.Management.ManagementObjectSearcher..ctor (System.String)' fehlgeschlagen .Versuch durch Sicherheit transparente Methode für den Zugriff auf sicherheitskritische Methode fehlgeschlagen

Assembly 'PayPalCoreSDK, Version=1.4.1.0, Culture=neutral, PublicKeyToken=null' is partially trusted, which causes the CLR to make it entirely security transparent regardless of any transparency annotations in the assembly itself. In order to access security critical code, this assembly must be fully trusted. 

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.MethodAccessException: Attempt by security transparent method 'PayPal.UserAgentHeader.get_OperatingSystemFriendlyName()' to access security critical method 'System.Management.ManagementObjectSearcher..ctor(System.String)' failed. 

Assembly 'PayPalCoreSDK, Version=1.4.1.0, Culture=neutral, PublicKeyToken=null' is partially trusted, which causes the CLR to make it entirely security transparent regardless of any transparency annotations in the assembly itself. In order to access security critical code, this assembly must be fully trusted. 

This stackoverflow answer erwähnt die [SecuritySafeCritical] Attribut der Klasse hinzufügen, aber in diesem Fall die Klasse im Spiel ist in einer DLL durch NuGet geladen.

Gibt es globale Einstellungen, die ich verwenden kann, um diese Ausnahme zu umgehen?

Antwort

12

den folgenden Tag zu Ihrem web.config hinzufügen:

<configuration> 
    <system.web> 
     <trust level="Full" /> 
    </system.web> 
</configuration> 

Die Server auf Ihrem Hosting-Service ist wahrscheinlich Setup mit einer mittleren Vertrauensebene. Das 'PayPalCoreSDK' erfordert, dass Ihre Anwendung mit einer vollständigen Vertrauensstufe ausgeführt wird.

+1

Vielen Dank für die Antwort. Das Vertrauensniveau war bereits voll. Ich löste dieses Problem, indem ich meine DLLs signierte, einige sicherheitsrelevanten Code änderte und sie neu kompilierte. Ich bin froh, dass die PayPal SDKs Open Source sind oder ich wäre SOL! – Zerkey

+1

Können Sie bitte erklären, wie Sie "einen sicherheitsrelevanten Code optimiert haben"? Ich habe dieses Problem gerade jetzt und meine DLLs sind signiert, Trust = Full, und kann immer noch nicht funktionieren. – antman1p

6

Zugabe für mich

// added because of security transparency change in framework 4.0 
[assembly: SecurityRules(SecurityRuleSet.Level1)] 

dies hat den Job zu AssemblyInfo.cs ....

0

In meinem Fall war es ein Problem, wenn ich ein NuGet Pakete in der Lösung einige Paket überschreibt verwaltet System.Web.Mvc Assembly Version Bindung im Haupt-Website-Projekt. Setze zurück auf 4.0.0.0 (ich hatte 5.0 installiert). Ich habe die Änderung nicht bemerkt, weil Mvc v4.0 installiert und über GAC erreichbar war. Zurücksetzen

0

Ich arbeitete an einer Brownfield-Anwendung mit vielen referenzierten Projekten in der Lösung. Ein Projekt wurde auf .NET 4.0 statt auf 4.6.1 gesetzt, und ich dachte, dass es das könnte, aber das war nicht das Problem. Ich hatte hinzuzufügen:

[assembly:AllowPartiallyTrustedCallers] 

zur assembly.cs Datei in dem Projekt die „sicherheitskritischen“ Methode enthält, und es war mit mir nicht glücklich, bis ich auch

using System.Security; 

fügte hinzu, dass taten der Trick.

Joey

1

Nach WPFToolkit 3.5 Framework 4.6.1 Rahmen aktualisieren, die unter Sicherheitsregeln in AssemblyInfo.cs lösen das Problem:

// added because of security transparency change in framework 4.0 
[assembly: SecurityRules(SecurityRuleSet.Level1)] 
Verwandte Themen