Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 14933|Απάντηση: 1

[ASP.NET] asp.net Λήψη αρχείου καταλόγου τοποθεσίας είναι κενό

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 5/1/2018 4:18:49 μ.μ. | | | |
Αρχικά, επικολλήστε τον κώδικα για να λάβετε το αρχείο καταλόγου ιστότοπου, ως εξής:



Μετά την εκτέλεση αυτής της πρότασης, θα γίνει μια εξαίρεση λέγοντας ότι το αντικείμενο είναι κενό, όπως φαίνεται στο παρακάτω σχήμα:



Γιατί παίρνω null;

Επειδή το νήμα που εκτελεί αυτόν τον κώδικα δεν είναι το τρέχον νήμα που χειρίζεται το τρέχον αίτημα

Γιατί δεν είναι άκυρο όταν το παίρνεις αλλού;

Αυτό συμβαίνει επειδή ASP.NET πρόγραμμα έχει ήδη ορίσει το αντικείμενο HttpContext στην ιδιότητα System.Runtime.Remoting.Messaging.CallContext.HostContext που αναφέρθηκε προηγουμένως πριν καλέσει τον κώδικά σας.

Το HttpApplication έχει μια εσωτερική μέθοδο OnThreadEnter(), ASP. Το .NET καλεί αυτήν τη μέθοδο για να αλλάξει το HttpContext πριν από την κλήση εξωτερικού κώδικα, για παράδειγμα, κάθε φορά που εκτελείται το πρόγραμμα χειρισμού συμβάντων της διοχέτευσης ή όταν το περιβάλλον συγχρονισμού (AspNetSynchronizationContext) εκτελεί μια επιστροφή κλήσης. Μετά την εναλλαγή της ιδιότητας CallContext.HostContext του νήματος, ο κώδικάς μας μπορεί να έχει πρόσβαση στην αναφορά HttpContext. Σημείωση: Η αναφορά στο HttpContext αποθηκεύεται στην πραγματικότητα στο αντικείμενο HttpApplication.



Πώς να αποκτήσετε την απόλυτη διαδρομή του αρχείου σε αυτήν την περίπτωση;

Μπορούμε να αποκτήσουμε πρόσβαση στο System.Web.HttpRuntime.AppDomainAppPath για να λάβουμε τη ρίζα του προγράμματοςκαι, στη συνέχεια, συνδέστε τις σχετικές διαδρομές του αρχείου





Προηγούμενος:Πλήρης εξήγηση της υποκείμενης ευπάθειας των επεξεργαστών Intel: Κανένα κινητό τηλέφωνο/υπολογιστής στον κόσμο δεν γλιτώνει
Επόμενος:Σύνοψη της μεθοδολογίας δημιουργίας autofac instance
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com