Запретить блокировку каталогов IIS7 / ASP.NET с изображениями - PullRequest
0 голосов
/ 23 июня 2011

У меня есть веб-приложение ASP.NET, использующее среду ASP.NET MVC 2.Это позволяет пользователям загружать файлы в папку загрузки.Эта проблема возникает, когда веб-браузер обращается к изображению в подпапке:

http://mywebapp/uploads/image_gallery/sub_folder/image.jpg

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

В приведенном выше примере папка image_gallery блокируется, потому что w3wp.exe создается для создания дескриптора в каталоге sub_folder (с помощью проводника процессов от sysinternals).Я все еще могу переименовать каталог sub_folder, и дескриптор, кажется, остается с ним после переименования, но я не могу переименовать родительскую папку (в данном случае image_gallery).

Я все еще могу просматривать в папкеи просматривать другие изображения и файлы и т. д. Но не могу переименовать родительскую папку.

Поскольку это использует инфраструктуру MVC 2, я добавил исключение для папки загрузки следующим образом:

routes.IgnoreRoute("upload/{*pathInfo}");

в global.asax, поэтому я предполагаю, что ASP.NET обслуживает эти изображения напрямую (за пределами MVC-фреймворка)

Поэтому я предполагаю, что есть вопрос, есть ли способ предотвратитьIIS от установки дескриптора на определенные каталоги или заставить его удалить дескриптор?Платформа MVC 2 делает что-то хитрое, хотя у меня указан ignoreroute?

Заранее спасибо за любые советы!

Ответы [ 2 ]

2 голосов
/ 09 мая 2015

У меня была та же проблема, и после долгих исследований я нашел виновника:

Web.config

<configuration>
    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true">

Установка этой опции (которая заставляет все http-модули запускаться на ВСЕХ файлах, включая статические) на false исправила ее для меня.

0 голосов
/ 23 июня 2011

Я полагаю, дескриптор каталога создается в рабочем процессоре, потому что ASP.NET обычно отслеживает изменения в файловой системе - это позволяет ему реагировать на изменение / добавление файлов конфигурации, новых библиотек и т. Д.

Я предлагаючто вы отказываетесь от концепции, что пользователи могут контролировать физическую структуру каталогов на веб-сервере.Обычно пользователь может создать логическую структуру каталогов, но физическая структура будет управляться логикой вашей программы.Ваша логика будет хранить логическую структуру, созданную пользователем, и ее отображение с фактической физической структурой на веб-сервере.

...