2009-08-26 15 views
0

Kürzlich ist unser Webhosting-Anbieter auf eine mittlere Vertrauensstufe für alle freigegebenen ASP.NET-Site-Hosting verschoben. Aus diesem Grund haben wir Probleme, Transaktionen über die SOAP-API von PayPal abzuschließen. Insbesondere wird eine Security Ausnahme mit dem folgenden Stack-Trace geworfen:PayPal - ASP.NET Medium Trust

[SecurityException: Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.] 
    System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet) +0 
    System.Security.CodeAccessPermission.Demand() +58 
    System.Net.ServicePointManager.set_CertificatePolicy(ICertificatePolicy value) +54 
    com.paypal.sdk.core.APICallerBase.SetTrustManager() +30 
    com.paypal.sdk.core.soap.SOAPAPICaller..ctor() +14 
    com.paypal.sdk.services.CallerServices..ctor() +23 
... 

ich die Quelle der säumigen Methode in der PayPal SOAP SDK aufgespürt.

Weiß jemand, welche Änderungen vorgenommen werden müssen, damit das SDK in einer vertrauenswürdigen Umgebung mit mittlerer Vertrauenswürdigkeit funktionieren kann? Ist es notwendig, dass alle nicht vertrauenswürdigen Zertifikate akzeptiert werden?

Danke.

Antwort

1

Sie könnten Ihren Internetdienstanbieter bitten, die PayPal-Assemblys zu GAC zu leiten - auf diese Weise werden sie vollständig vertrauenswürdig ausgeführt (vorausgesetzt, sie verfügen über das Attribut zum Zulassen von teilweise vertrauenswürdigen Anrufern in der Assembly).

Das andere Problem mit Medium Trust ist, dass ausgehende Netzwerkverbindungen, einschließlich SOAP-Aufrufe, nicht zugelassen werden.

1

Mein Problem war die Konfigurationsdatei

ersetzen

public static Dictionary<string, string> GetConfig() 
{ 
    return PayPal.Api.ConfigManager.Instance.GetProperties(); 
} 

von

public static Dictionary<string, string> GetConfig() 
{ 
    var dict = new Dictionary<string, string>(); 
    dict["mode"] = "sandbox"; 
    dict["connectionTimeout"] = "360000"; 
    dict["requestRetries"] = "1"; 
    dict["clientId"] = "AXRCZ.....-NJ1asp"; 
    dict["clientSecret"] = "EFQC....x5tqD14-tf"; 
    return dict; 
} 

Thomas

zu lesen
Verwandte Themen