Assembly & Trust level



  • Hi

    Ich versuche verzweifelt SQLite zu benutzen. Lokal geht es - am Server natürlich nicht. Habe folgendes in die web.config reingehaut:

    <system.data>
        <DbProviderFactories>
          <remove invariant="System.Data.SQLite"/>
          <add name="SQLite Data Provider" invariant="System.Data.SQLite"
               description=".Net Framework Data Provider for SQLite"
               type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite,
                     Version=1.0.60.0, Culture=neutral,
                     PublicKeyToken=db937bc2d44ff139"/>                                
        </DbProviderFactories>
      </system.data>
    

    Bekomme da den Policy Fehler:

    [PolicyException: Erforderliche Berechtigungen wurden nicht erhalten.]
       System.Security.SecurityManager.ResolvePolicy(Evidence evidence, PermissionSet reqdPset, PermissionSet optPset, PermissionSet denyPset, PermissionSet& denied, Boolean checkExecutionPermission) +2770052
       System.Security.SecurityManager.ResolvePolicy(Evidence evidence, PermissionSet reqdPset, PermissionSet optPset, PermissionSet denyPset, PermissionSet& denied, Int32& securitySpecialFlags, Boolean checkExecutionPermission) +57
    ...
    

    Erhöhe ich das Trustlevel bekomme ich:

    Beschreibung: Fehler beim Verarbeiten einer Konfigurationsdatei, die für diese Anforderung erforderlich ist. Überprüfen Sie die unten angegebenen Fehlerinformationen, und ändern Sie die Konfigurationsdatei entsprechend.
    
    Parserfehlermeldung: Dieser Konfigurationsabschnitt kann für diesen Pfad nicht verwendet werden. Dies tritt auf, wenn der Siteadministrator den Zugriff auf diesen Abschnitt mithilfe von <location allowOverride="false"> über eine geerbte Konfigurationsdatei gesperrt hat.
    

    Habe in <system.web> <trust level="High" /> eingefügt.

    PublicKeyToken stimmt, DLL Datei ist in einem Bin Ordner, Lokal geht es

    Weiß jemand Rat? 😞

    mfg



  • Hallo,

    [...]den Zugriff auf diesen Abschnitt mithilfe von <location allowOverride="false"> über eine geerbte Konfigurationsdatei gesperrt hat.

    Je nach Webserver gibt es unterschiedliche Konfigurationen. Im Apache wäre es die httpd.conf in der man die Berechtigungen setzen muss.

    <Directory "C:/xampp/htdocs">

    # It can be "All", "None", or any combination of the keywords:
    # Options FileInfo AuthConfig Limit

    AllowOverride All

    </Directory>

    Also schau dir nochmal die Konfiguration des Servers an.

    LG, Micha



  • Also den Truslevel kennen uich nur ein WSS bzw. MOSS.
    Bei normalen ASPX wird da nichts aktiviert.
    Solltest mal sagen was du genau machst. Hast du webparts drin etc.



  • Hallo

    Webserver kann ich nichts machen - SharedHosting

    Also alles noch mal genau:
    * Habe System.Data.SQLite.DLL nach / und auch testweise nach /Bin/ kopiert
    * Hab unter <configuration> die angefürhte <system.data> eingefügt
    * type wurde kontrolliert - von Dokumentation kopiert
    * Danach ein normales using von SQLite - am "Testserver" von Visual Studio rennt alles ohne Probleme - kann auf die Datenbank zugreifen
    * Am server der besagte Fehler 😞

    Hier noch mal die ganze Log (der letzte Teil ist uninteressant imo) - aber das lustige ist der 2te. Absatz => File not found & zu wenig Rechte!?

    [PolicyException: Erforderliche Berechtigungen wurden nicht erhalten.]
       System.Security.SecurityManager.ResolvePolicy(Evidence evidence, PermissionSet reqdPset, PermissionSet optPset, PermissionSet denyPset, PermissionSet& denied, Boolean checkExecutionPermission) +2770052
       System.Security.SecurityManager.ResolvePolicy(Evidence evidence, PermissionSet reqdPset, PermissionSet optPset, PermissionSet denyPset, PermissionSet& denied, Int32& securitySpecialFlags, Boolean checkExecutionPermission) +57
    
    [FileLoadException: Die Datei oder Assembly System.Data.SQLite, Version=1.0.60.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139 oder eine Abhängigkeit davon wurde nicht gefunden. Die minimale Berechtigung konnte nicht erteilt werden. (Ausnahme von HRESULT: 0x80131417)]
       System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) +0
       System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) +54
       System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +211
       System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +141
       System.Reflection.Assembly.Load(String assemblyString) +25
       System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +32
    

    Mich ich da einen Kapitalfehler? 😕



  • Mal ein andere Frage. Warum verwendest Du SQLLITE?
    Wenn du schon ASPNET hast dann kannst du auch SQL COMPACT verwenden.



  • Najo - da muss man ja einwenig reinhacken damit das mit ASP.NET geht. Problem bei SQLite ist, dass es 80% C/C++ ist und das bei middle Trust nicht erlaubt ist - da ist nur managed erlaubt.

    Najo - Pech gehabt 🙂
    txh so far


Anmelden zum Antworten