.axd генерируют ошибку 404
Почему все мои .axd файлы генерируют ошибку 404 на нашем производственном сервере?
Ответы
Ответ 1
Вам нужно создать тип MIME для этого расширения в IIS:
Чтобы определить тип MIME для определенного расширения, выполните следующие действия:
- Откройте консоль управления Microsoft IIS (MMC), щелкните правой кнопкой мыши имя локального компьютера и выберите "Свойства".
- Нажмите HTTP заголовки.
- Нажмите MIME-типы.
- Нажмите "Создать".
- В поле Расширение введите расширение имени файла, которое вы хотите (например,.axed)
- В поле MIME Type введите application/octet-stream.
- Применить новые настройки. Обратите внимание, что вы должны перезапустить службу публикации World Wide Web или дождаться перезагрузки рабочего процесса, чтобы изменения вступили в силу. В этом примере IIS теперь служит для файлов с расширением .axed.
Ответ 2
если вы используете IIS7, убедитесь, что вы добавили обработчик в раздел <system.webServer><handlers>
:
<add name="MyName" path="MyName.axd" verb="*" type="NameSpace.Class, Assembly" />
Ответ 3
В моем случае я передавал проект из .NET 2.0 с использованием автоматического преобразования. Конвертер добавил раздел <system.webServer>
и все обработчики и модули, которые находятся в <system.web>
. Однако для каждого обработчика он добавил следующий атрибут: preCondition = "integMode, runtimeVersionv2.0"
После удаления атрибута 404s остановился, и обработчик начал работать.
Ответ 4
Подтвердите, что в Request Filtering
вы либо
* иметь .axd
как разрешенное расширение, или
* have Allow unlisted file name extensions
отмечен в настройках фильтрации запросов на запрос
Тот же эффект может быть достигнут в следующем разделе web.config:
<system.webServer>
<security>
<requestFiltering>
<fileExtensions>
<add fileExtension=".axd" allowed="true" />
</fileExtensions>
</requestFiltering>
</security>
</system.webServer>
Ответ 5
У нас была ошибка 500 (это не 404, но кто знает) на нашем производственном сервере некоторое время назад. Ресурсам script удалось загрузить.
Проблема заключалась в разнице во времени между нашими серверами разработки и производства. Было -7 часов..NET бросил исключение из-за того, что попытался использовать "время в будущем" сборки со встроенными ресурсами script.
Уменьшение папки {website}/bin/
(на самом деле сборки в ней), созданное с каждым днем, решило проблему.
Ответ 6
Вы можете проверить следующее:
- Проверьте консоль управления IIS, что разрешено расширение .axd(расширение HTTP-обработчика по умолчанию).
- Также проверьте, установлен ли флажок "Проверить ли файл", не отмечен. Этот экран появляется после нажатия кнопки "Редактировать" после выбора расширения axd.
- Проверьте, правильно ли зарегистрирован обработчик HTTP в web.config. Он также должен быть в правильном разделе конфигурации в зависимости от версии IIS. Для классического режима IIS6 и IIS7 он должен быть в
<system.web><httpHandlers>
. Для интегрированного режима IIS7 он должен быть зарегистрирован в <system.webServer><handlers>
.
Ответ 7
Можете ли вы сделать "плохой" запрос, который терпит неудачу, а затем проверить журналы системных журналов сервера и приложений?
Есть несколько вопросов вокруг axd, которые могут вызвать 404s или 500s (например, проблема времени в будущем, упомянутая Алексом), но оставляют след в журнале событий.
Посмотрите и разместите записи в журнале, в которых упоминаются axds.
Ответ 8
Я добавил атрибут runAllManagedModulesForAllRequests = "true" в модули.. node раздела system.webServer, 404s остановился и обработчик начал работать.
Ответ 9
Если это поможет кому-либо, у меня была такая же проблема, немногие из нас провели 2 дня. На 3 серверах все работало нормально, а также при разработке, но на этом сервере 404 не остановился. Решение, я изменил poold от интегрированного к классическому и который работал