Was sind die häufigsten typischen Dinge, die AVOID in meine ASP.NET-App einprogrammieren, damit sie auf einem gemeinsam genutzten Host unter mittlerer Vertrauenswürdigkeit ausgeführt werden kann?

8

Was sind die Dinge, von denen Medium Trust dich abhält? Zum Beispiel habe ich bereits erfahren, dass Medium Trust Sie daran hindert, System.IO.Path.GetTempPath () zu verwenden. Welche anderen Dinge sind so?

    
Corey Trager 09.11.2008, 00:49
quelle

6 Antworten

4

Hier erfahren Sie, wie Sie Vertrauensprobleme erkennen und lösen können.

1) Durchsuchen Sie Ihre Windows \ Microsoft.NET \ Framework [IHRE VERSION] \ CONFIG-Ordner für die Dateien:

  • web.config (das ist die Root-Konfigurationsdatei)
  • web_mediumtrust.config
  • web_hightrust.config

2) Ändern Sie die Datei web.config, um

zu sagen %Vor%

3) Versuchen Sie Ihre ASP.NET App. Mine ist mit einem Berechtigungsfehler fehlgeschlagen.

4) Vergleichen Sie web_mediumtrust.config und web_hightrust.config in einem Diff-Tool wie WinMerge.

5) Kopieren Sie die Einstellungen jeweils von hoch auf mittel und sehen Sie, wie sie Ihre App beeinflussen. In meinem Fall bezog sich die Fehlermeldung auf ConfigurationPermission, so dass es leicht zu diagnostizieren war.

Wenn Sie die genauen Zeilen in der Datei web_mediumtrust.config festhalten können, die Sie blockieren, können Sie diese möglicherweise mit Ihrem Hosting-Unternehmen teilen und haben eine bessere Chance, die Dinge zu klären.

Weitere Dokumentation hier:
Ссылка

@Oli, meine App IS gehostet bei GoDaddy und ich musste einige Workarounds in Code machen, als ich begann, Lucene.NET zu verwenden. Ich musste den Lucene.NET-Quellcode ändern, um GetTempPath und System.IO.FileInfo nicht zu verwenden.

    
Corey Trager 09.11.2008, 02:46
quelle
3

Wer kann sicher sein? Aus diesem Grund sollten Sie in der Datei web.config mit einem Vertrauenslevel des Mediums arbeiten.

%Vor%     
Shawn 09.11.2008 00:50
quelle
3

Die meisten gemeinsam genutzten Hosts verwenden keine echte vertrauenswürdige Umgebung, da sie einige Dinge beschränken, die einfach zu wichtig sind. Andere beschränken einige zusätzliche Einstellungen für ihre eigenen analen Gründe.

Am besten fragen Sie Ihren Host, welche Einstellungen er für ASPNET verwendet. Fragen Sie nach den Spezifikationen des Vertrauenslevels, das sie verwenden. Finde die Speichergrenzen heraus. Sobald Sie diese Details haben, sollten Sie das Szenario auf lokaler Ebene replizieren können.

Wenn sie es Ihnen nicht sagen, richten Sie Ihre App so ein, dass sie in mittlerer Vertrauenswürdigkeit ausgeführt wird, aber sie funktioniert (offensichtlich) nicht, wenn sie eine geänderte Vertrauensstufe verwenden.

Hier finden Sie einige Informationen zum Festlegen von Vertrauensstufen in IIS .

Im Allgemeinen ist das einzige Problem, auf das ich gestoßen bin: Wenn Sie Assemblys drängen, stellen Sie sicher, dass Sie teilweise vertrauenswürdige Anfragen zulassen (es ist ein Assembly-Meta-Tag), sonst können Sie sie nicht verwenden.

Hier ist ein Auszug aus GoDaddy's Medium Trust Informationsseite :

  

Anwendungen, die unter einem Medium arbeiten   Vertrauensebene haben keinen Registrierungszugriff,   kein Zugriff auf das Windows-Ereignisprotokoll,   und kann ReflectionPermission nicht verwenden   (kann aber Reflection verwenden). Eine solche   Anwendungen können nur mit kommunizieren   ein definierter Bereich von Netzwerkadressen   und Dateisystemzugriff ist beschränkt auf   das virtuelle Verzeichnis der Anwendung   Hierarchie.

     

Die Verwendung einer mittleren Vertrauensstufe verhindert   Anwendungen Zugriff auf freigegebene   Systemressourcen und beseitigt die   Potenzial für die Anwendung   Interferenz. Hinzufügen von OleDbPermission   und OdbcPermission ermöglicht Anwendungen   um auf diese Datenanbieter zuzugreifen   Datenbanken. WebPermission wird geändert   Ausgehende http und https zulassen   Verkehr.

Das entspricht möglicherweise nicht genau dem, mit dem Sie mit Ihrem Host arbeiten müssen (es sei denn, Sie arbeiten mit GoDaddy), aber es ist ein typisches Beispiel.

    
Oli 09.11.2008 00:54
quelle
0

Stellen Sie sicher, dass Bibliotheken / Frameworks von Drittanbietern (Castle kommt mir in den Sinn) in mittlerer Vertrauenswürdigkeit erstellt (oder erstellt werden können).

    
Bless Yahu 09.11.2008 02:14
quelle
0

Die system.runtime.serialization-Bibliothek ist in der mittleren Vertrauensstellung nicht verfügbar.

Ich habe das für die jSerialisierung / Deserialisierung programmiert und den harten Weg herausgefunden. Es dauerte eine Woche, um einen Mitarbeiter zu finden, um zu bestätigen, dass die mittleren Vertrauensbeschränkungen schuld waren. Am Ende wechselte ich Hosting-Unternehmen.

    
apocalypse9 10.12.2008 04:37
quelle
0

Bei mittlerer Vertrauenswürdigkeit, zumindest bei meinem Host, sind P / INVOKE-Aufrufe nicht verfügbar, dh die Verwendung von [DLLImport] zum Aufruf einer COM-Komponente wird nicht funktionieren.

-Edoode

    
edosoft 15.01.2009 14:23
quelle