Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 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