Announcement

Collapse
No announcement yet.

CAS: leere Standardklassenbibliothek wirft Security-Exception

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • CAS: leere Standardklassenbibliothek wirft Security-Exception

    Hallo zusammen,
    wie das immer so ist, die (für mich) unlösbaren Problemen kommen immer Freitag Abend:

    Kurz und knapp mein Anliegen:
    Ich erzeuge ein neues C# 2.0 Projekt, eine Klassenbibliothek (namens DoNothing), belasse alles so wie es ist. Kompiliere das, sodass ich eine DoNothing.dll erhalte. Das Projekt wie die DLL liegen in einem lokalen Verzeichnis.

    Jetzt gehe ich unter meinem XP (SP2, IE7 / W2k3, IE6 (auf beiden Systemen die gleichen Probleme)) in die Systemsteuerung/Verwaltung und öffne die Microsoft Dot.Net-Framework 2.0 Configuration, gehe dort auf "My Computer", "Configure Code Access Security Policy", "Increase Assembly Trust", wähle "Make changes to this computer", gebe dann den Pfad zu der DoNothing.dll an und wähle diese dll, nach Klick auf Next erhalte ich:

    System.Security.SecurityException: Hash für Assembly kann nicht generiert werden.
    ... *bla* ...
    Die Zone der Assembly, bei der ein Fehler aufgetreten ist:
    MyComputer

    Was ist da schief gelaufen?

    Anmerkung:
    Die Fehlermeldung tritt unabhängig davon auf, ob die Zone MyComputer auf "Full Trust" oder "No Trust" steht.

    Optional:
    Ich habe das Problem eigentlich in einem WebPart, wo mir gesagt wird, dass ein Assembly nicht vertrauenswürdig ist, jetzt wollte ich gezielt alle Assemblys auf diese Art und Weise vertrauenswürdig setzen.

    Bitte dringend um eure Hilfe!

    Viele Grüße

    Andreas Möhlenbrock

  • #2
    Hallo,
    hat die Klassenbibliothek einen Strong Name (d.h. eine zugeordnete .snk-Datei)

    Comment


    • #3
      Hallo Herr Kosch,

      danke Ihnen für den Hinweis, unter Punkt1 eingeordnet ;-)

      Habs jetzt geschafft:
      1. das Webpart und die zugehörigen Assemblys signiert (VS-Projekteigenschaften, ohne Kommandozeile)
      2. in jeder AssemblyInfo.cs das Attribut [assembly: AllowPartiallyTrustedCallers] hinzugefügt
      3. SafeControl-Eintrag in web.config
      4. in der dot.net Konfigurationskonsole alle Assemblys mit dem Public Key auf "Voll vertrauenswürdig" gestellt
      5. in web.config unter <system.web> <trust level="Full" originUrl="" /> den Trustlevel von WSS_minimal auf Full (WSS_medium reichte nicht ;-) ) gestellt

      Mit Permissions auf C#-Codeebene
      ( using System.Security.Permissions; using System.Security; )
      habe ich auch experimentiert, eine schöne Spielerei, aber nicht wirklich notwendig.

      Ich bin jetzt einfach nur glücklich, dass es endlich funktioniert.

      Viele Grüße

      Andreas Möhlenbroc

      Comment

      Working...
      X