Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 14933|Antwort: 1

[ASP.NET] asp.net Site-Verzeichnis-Datei Get ist leer

[Link kopieren]
Veröffentlicht am 05.01.2018 16:18:49 | | | |
Fügen Sie zuerst den Code ein, um die Website-Verzeichnisdatei wie folgt zu erhalten:



Nachdem dieser Satz ausgeführt wurde, wird eine Ausnahme geworfen, die besagt, dass das Objekt leer ist, wie in der Abbildung unten gezeigt:



Warum bekomme ich null?

Weil der Thread, der diesen Code ausführt, nicht der aktuelle Thread ist, der die aktuelle Anfrage verarbeitet

Warum ist es nicht null, wenn man es woanders bekommt?

Das liegt daran, dass ASP.NET Programm das zuvor erwähnte HttpContext-Objekt bereits auf die zuvor erwähnte Eigenschaft System.Runtime.Remoting.Messaging.CallContext.HostContext gesetzt hat, bevor es Ihren Code aufruft.

HttpApplication hat eine interne Methode namens OnThreadEnter(), ASP. .NET ruft diese Methode auf, um den HttpContext zu wechseln, bevor externer Code aufgerufen wird, zum Beispiel wenn der Ereignishandler der Pipeline ausgeführt wird oder wenn der Synchronisationskontext (AspNetSynchronizationContext) einen Callback ausführt. Nachdem wir die Eigenschaft CallContext.HostContext des Threads geändert haben, kann unser Code auf die HttpContext-Referenz zugreifen. Hinweis: Der Verweis auf den HttpContext wird tatsächlich im HttpApplication-Objekt gespeichert.



Wie bekommt man in diesem Fall den absoluten Pfad der Datei?

Wir können auf System.Web.HttpRuntime.AppDomainAppPath zugreifen, um den Root-Pfad des Programms zu erhalten, und dann die relativen Pfade der Datei zusammenschneiden





Vorhergehend:Vollständige Erklärung der zugrunde liegenden Schwachstelle von Intel-CPUs: Kein Mobiltelefon/Computer der Welt wird verschont
Nächster:Zusammenfassung der Methodik der Autofac-Erstellung von Instanzen
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com