none
Problem mit log4net und .NET4.0 RRS feed

  • Allgemeine Diskussion

  • Hallo NG,

    ich möchte gerne PayPal in meiner Homepage einbinden und benötige deshalb log4net. Ich habe mir das Programm down geladen und nach http://fouad.laplacesoftware.com/?p=28 angepasst.

    Der Compiler hat auch alles übersetzt. Nur wenn ich die PayPal SDK aufrufe bekomme ich folgende exception:

    Beim Überschreiben des Members "log4net.Util.ReadOnlyPropertiesDictionary.GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" wurden die Vererbungssicherheitsregeln verletzt. Der Sicherheitszugriff der überschreibenden Methode muss mit dem Sicherheitszugriff der überschriebenen Methode übereinstimmen.

    Beschreibung: Unbehandelte Ausnahme beim Ausführen der aktuellen Webanforderung. Überprüfen Sie die Stapelüberwachung, um weitere Informationen über diesen Fehler anzuzeigen und festzustellen, wo der Fehler im Code verursacht wurde.

    Ausnahmedetails: System.TypeLoadException: Beim Überschreiben des Members "log4net.Util.ReadOnlyPropertiesDictionary.GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" wurden die Vererbungssicherheitsregeln verletzt. Der Sicherheitszugriff der überschreibenden Methode muss mit dem Sicherheitszugriff der überschriebenen Methode übereinstimmen.

    Quellfehler:

    Zeile 36:         /// used to log the request and response.
    Zeile 37: /// </summary>
    Zeile 38: private static readonly ILog log = LogManager.GetLogger(BaseConstants.PAYPALLOGFILE);
    Zeile 39:
    Zeile 40: /// <summary>

    Diese ist die Methode welche aufgerufen wird:

    [System.Security.Permissions.SecurityPermissionAttribute(System.Security.Permissions.SecurityAction.Demand, SerializationFormatter=true)]
            public virtual void GetObjectData(SerializationInfo info, StreamingContext context)
            {
                foreach(DictionaryEntry entry in InnerHashtable)
                {
                    string entryKey = entry.Key as string;
                    object entryValue = entry.Value;

                    // If value is serializable then we add it to the list
                    if (entryKey != null && entryValue != null && entryValue.GetType().IsSerializable)
                    {
                        // Store the keys as an Xml encoded local name as it may contain colons (':')
                        // which are NOT escaped by the Xml Serialization framework.
                        // This must be a bug in the serialization framework as we cannot be expected
                        // to know the implementation details of all the possible transport layers.
                        info.AddValue(XmlConvert.EncodeLocalName(entryKey), entryValue);
                    }
                }
            }

     

    Hat jemand eine Idee was ich machen kann???

     

    Schönen Dank im voraus.

     

     

    Grüße  Ingo

    • Typ geändert Stefan FalzModerator Dienstag, 27. Mai 2014 13:49 Thread ohne bestätigte Lösung abgeschlossen
    Freitag, 30. September 2011 16:24

Alle Antworten

  • Hallo Ingo,

    die Fehlermeldung sagt in etwa, dass deine Method in log4net als public, die Originalmethode aber als private deklariert ist.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Freitag, 30. September 2011 18:55
    Moderator
  • Hallo Stefan,

    Danke für Deine Antwort nur irgendwie verstehe ich es nicht.

    Die Methode : public virtual void GetObjectData(SerializationInfo info, StreamingContext context)

    wird doch in der class nicht überschrieben sondern als virtual angelegt.

     

    Grüße Ingo

     

    Samstag, 1. Oktober 2011 12:32