Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 14933|Відповідь: 1

[ASP.NET] asp.net Файл директорії сайту Get Site порожній

[Копіювати посилання]
Опубліковано 05.01.2018 16: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
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com