IIS показывает 404, но файл существует

У меня проблема с моим приложением после запуска его на VPS.

Я установил IIS на VPS, удалил DefaultWebsite и добавил еще один. Все выглядит хорошо, сайт запускается, но у меня нет доступа к файлам из таких папок, как Content, Scripts, Templates и так далее. Это означает, что у меня нет фотографий и стилей на моем сайте.

Я пытаюсь получить большие разрешения для IIS_IUSRS, но файлы по-прежнему не отображаются правильно. Сайт находится в том же разделе, что и система, и я думаю, что это проблема, но я не могу переместить его. У меня есть только один раздел:-(Любое решение для этого?

7 ответов

У меня ничего из вышеперечисленного не сработало. Что действительно сработало (и я помню из прошлых эпох), так это отсутствие сопоставления типов MIME сбивает с толку IIS. Это легко диагностировать как проблему, если вы можете поместить файлы разных типов в разные папки.

Простое исправление - это раздел "Типы MIME" в IIS на сервере, веб-сайте или в виртуальной папке. Просто добавьте "*.foo" и "application / octet-stream" в качестве типа MIME, который говорит "просто отправьте байты уже!"

Вам нужно добавить web.config файл для обслуживания статических файлов в каждой папке, содержащий статические файлы со следующим содержимым:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.webServer>
        <staticContent>
            <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" />
        </staticContent>
        <handlers accessPolicy="Script,Read">
            <!-- For any request to a file exists on disk, return it via native http module. AccessPolicy="Script" above is to allow for a managed 404 page. -->
            <add name="StaticFile" path="*" verb="*" modules="StaticFileModule" preCondition="integratedMode" resourceType="File" requireAccess="Read" />
        </handlers>
    </system.webServer>
</configuration>

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

Я также добавил этот код, чтобы приложение работало. Без этого приложение не работает, но файлы отображаются правильно:-(

<system.webServer>
   <validation validateIntegratedModeConfiguration="false"/>
    <handlers>
   <remove name="BlockViewHandler"/>
     <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler"/>
    </handlers>
    </system.webServer>

Пожалуйста, проверьте пользователя в IIS. Сайт -> Основные настройки -> Подключиться как... (если я правильно помню)

По умолчанию пользователь в IIS - IUSR. Вы должны перейти на IIS_IUSRS. И тогда Ваши разрешения будут работать.

Эта статья может помочь вам

В моем случае у меня был файл с расширением cache - неизвестный тип пантомимы в IIS.

Моя проблема с файлом 404 была решена путем обновления сайта web.config для добавления mimeMap для расширения файла cache, следующее:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <directoryBrowse enabled="true" />
        <security>
            <requestFiltering>
                <fileExtensions>
                    <remove fileExtension=".config" />
                    <add fileExtension=".config" allowed="true" />
                    <add fileExtension=".dll" allowed="true" />
                    <add fileExtension=".exe" allowed="true" />
                </fileExtensions>
            </requestFiltering>
        </security>
        <handlers accessPolicy="Read, Script" />
        <staticContent>
            <mimeMap fileExtension=".cache" mimeType="text/plain" />
        </staticContent>
    </system.webServer>
</configuration>

Подробнее о добавлении статического содержимого MIME Mappings и Troublshooting a 404

У меня тоже была такая проблема, оказалось проблема с путями к файлам.

Я попытался получить доступ к пути как "C:\folder\file"

Когда я попытался получить к нему доступ как «\ файл», он сработал, поэтому он будет выглядеть как «(ваш сервер) \ файл»

Не "(ваш сервер)C:\folder\file"

Другие вопросы по тегам