У меня есть каталоги изображений и стилей с Web.config
файл (с использованием Orchard). В этом Web.config
есть строка, вызывающая проблему на моем общем хостинге (отлично работает в WebMatrix):
<system.webServer>
<handlers accessPolicy="Script,Read">
<!--
iis7 - for any request to a file exists on disk, return it via native http module.
accessPolicy 'Script' is to allow for a managed 404 page.
-->
<add name="StaticFile" path="*" verb="*" modules="StaticFileModule" preCondition="integratedMode" resourceType="File" requireAccess="Read" />
</handlers>
</system.webServer>
Когда я пытаюсь получить доступ к любым файлам из этого каталога, я получаю страницу 500:
внутренняя ошибка сервера 500.
Возникла проблема с ресурсом, который вы ищете, и он не может быть отображен.
Когда я удаляю строку
<add name="StaticFile" path="*" verb="*" modules="StaticFileModule" preCondition="integratedMode" resourceType="File" requireAccess="Read" />
он отображает ресурсы.
Как я могу исправить эту проблему, не изменяя Web.config
файл, расположенный в каждом каталоге, содержащем файлы, к которым предполагается прямой доступ?
Я не думаю, что вы можете (я имею в виду на виртуальном хостинге).
Ошибка ясно говорит: «Невозможно добавить повторяющуюся запись коллекции типа« добавить »с уникальным ключевым атрибутом« name », установленным на« StaticFile ». Это означает, что уже есть запись с name="StaticFile"
где-то выше в иерархии конфигураций (в другом web.config в родительской папке .. или, скорее всего, в глобальном конфиге веб-сервера.
Чтобы решить эту проблему, вам нужно сначала удалить существующую строку конфигурации. Вы должны добавить <remove name="StaticFile" />
линия в ваш <handlers>
перед добавлением собственного обработчика, например:
<system.webServer>
<handlers accessPolicy="Script,Read">
<remove name="StaticFile" />
<!--
iis7 - for any request to a file exists on disk, return it via native http module.
accessPolicy 'Script' is to allow for a managed 404 page.
-->
<add name="StaticFile" path="*" verb="*" modules="StaticFileModule" preCondition="integratedMode" resourceType="File" requireAccess="Read"/>
</handlers>
</system.webServer>
Если у вас будет полный контроль над своим сервером (чего у вас нет, поскольку вы находитесь на общем хостинге), вы можете удалить StaticFile
обработчик из глобальной конфигурации IIS ... но разумно ли это ?? Добавление <remove...>
line - правильный подход для обоих сценариев.