Was sind die häufigsten, typischen Dinge Codierung in meine ASP.NET app, um zu vermeiden, für die es auf einem gemeinsamen Host unter Medium Trust zu laufen?

StackOverflow https://stackoverflow.com/questions/275444

Frage

Was sind die Dinge, die Medium Trust hält Sie tun? Zum Beispiel habe ich bereits gelernt, dass Medium Trust hält Sie von System.IO.Path.GetTempPath () verwenden. Was für andere Dinge wie das?

War es hilfreich?

Lösung

Hier ist, wie zu lernen und Vertrauen Probleme zu lösen.

1) Suchen Sie Ihr Windows \ Microsoft.NET \ Framework [IHRE VERSION] \ Config-Ordner für die Dateien:

  • web.config (dies ist die Wurzel config-Datei)
  • web_mediumtrust.config
  • Web_hightrust.config

2) Ändern Sie die web.config sagen

<trust level="Medium" originUrl="" />

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

4) Diff die web_mediumtrust.config und Web_hightrust.config in einem Diff-Tool, wie WinMerge.

5) Kopieren Sie die Einstellungen von den hohen zu dem Medium eines nach dem anderen und sehen, wie sie Ihre Anwendung beeinflussen. In meinem Fall wird die Fehlermeldung zu ConfigurationPermission, so war es leicht zu diagnostizieren.

Wenn Sie die genaue Linien in der web_mediumtrust.config Datei zu, die Sie blockieren, dann können Sie vielleicht, dass mit Ihren Hosting-Unternehmen teilen und haben eine bessere Chance, die Dinge der Arbeit aus.

Weitere Dokumentation hier:
http://msdn.microsoft.com/en-us/library/aa302425. aspx

@Oli, meine app IS auf GoDaddy gehostet und ich hatte einige Workarounds in Code zu tun, wenn ich mit Lucene.NET gestartet. Ich hatte die Lucene.NET Quellcode zu ändern, um nicht GetTempPath und System.IO.FileInfo zu verwenden.

Andere Tipps

Wer kann sicher sein? Deshalb sollten Sie mit einem Vertrauensniveau von mittlerem Satz in Ihrem web.config entwickeln sollten.

 <trust level="Full|High|Medium|Low|Minimal" />

Die meisten gemeinsamen Rechnern ein echtes Medium vertrauenswürdigen Umgebung nicht verwenden, da es einige Dinge beschränkt, die einfach zu wichtig sind. Andere beschränken einige zusätzliche Einstellungen für die eigenen anal Gründe.

Das Beste, was Sie tun können, ist fragen Sie Ihren Gastgeber, welche Einstellungen sie für ASPNET verwenden. Fragen Sie nach den Spezifikationen des Vertrauensebene sie verwenden. Finden Sie die Speichergrenzen aus. Sobald Sie diese Details haben sollten Sie in der Lage sein, das Szenario auf lokaler Ebene zu replizieren.

Wenn sie Ihnen nicht sagen, nur geben Sie Ihre App in Medium Vertrauen laufen, aber es (natürlich) nicht unbedingt funktionieren, wenn sie ein modifiziertes Vertrauensebene verwenden.

Hier ist einige Informationen über Vertrauensebene in IIS setzen.

In der Regel das einzige Problem, das ich habe laufe in ist: Wenn Sie Baugruppen sind drängen, stellen Sie sicher, dass Sie erlauben teilweise vertrauenswürdige Anfrage (es ist ein Assembly Meta-Tag), sonst werden Sie nicht in der Lage sein, sie zu nutzen.

Hier ist ein Auszug aus GoDaddys Medium Trust Informationsseite :

  

Anwendungen unter einem Medium Betrieb   Vertrauensebene haben keinen Zugriff auf die Registry,   kein Zugriff auf das Windows-Ereignisprotokoll,   und kann nicht verwendet werden Reflection   (Kann aber Reflection verwenden). Eine solche   Anwendungen können nur mit kommunizieren   einen definierten Bereich von Netzwerkadressen,   und Dateisystemzugriff ist beschränkt auf   Die virtuelle Verzeichnis der Anwendung   Hierarchie.

     

Mit einem Medium Vertrauensebene verhindert   Anwendungen den Zugriff auf gemeinsam genutzte   Systemressourcen und beseitigt die   Anwendungspotenzial   Interferenz, Störung. Hinzufügen OleDbPermission   und OdbcPermission ermöglicht es Anwendungen,   diese Daten-Provider den Zugang zu nutzen   Datenbanken. WebPermission modifiziert   zu ermöglichen Outbound http und https   Verkehr.

Das Karte möglicherweise nicht genau, was Sie mit Ihrem Gastgeber haben umgehen werden (es sei denn, Sie mit GoDaddy sind), aber es ist ein typisches Beispiel.

Stellen Sie sicher, jeder Dritte Bibliotheken / Frameworks (Castle in den Sinn kommt) sind bauen (oder gebaut werden kann) in mittlerer Vertrauenswürdigkeit.

Die System.Runtime.Serialization Bibliothek ist in mittlerer Vertrauenswürdigkeit vollständig nicht verfügbar.

I codiert, um dieses für Json Serialisierung / Deserialisierung und fand die harte Weise. Es dauerte eine Woche, um ein assoziiertes Unternehmen erhalten zu, dass das Vertrauen Einschränkung Medium zu bestätigen schuld waren. Ich landete Schalt-Hosting-Unternehmen als Folge.

In Medium vertrauen, zumindest bei meinem Gastgeber, P / Invoke Anrufe nicht verfügbar sind, dh [DLLImport] unter Verwendung eine COM-Komponente aufzurufen, wird nicht funktionieren.

-Edoode

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top