2009-02-14 6 views
2

У меня есть обработчик HTTP, установленный в файле web.config:HTTP Handler проблема

 <add verb="*" path="*_*.aspx" type="SeoHandler"/> 

И есть файл SeoHandler.ashx в корне моего веб-сайта, который указывает на SeoHandler.ashx .cs в папке App_Code (веб-сайт не является проектом веб-приложения).

Когда я запускаю сайт локально и набираю URL-адрес, например «dork_test.aspx», запрос перенаправляется на обработчик, где он затем занимается бизнесом.

Но когда скомпилированный сайт работает на моем домене, «dork_test.aspx» приведет:

Ошибка сервера в приложении «/».

Ресурс не найден.

Описание: HTTP 404. Ресурс вы ищете (или один из его зависимостей ) могли быть удалены, было изменено его имя или временно недоступна. Пожалуйста, просмотрите следующий URL-адрес и убедитесь, что правильно написано.

Запрошенный URL: /dork_test.aspx

Почему бы SeoHandler поймать запрос "dork_test.aspx" на месте, но не на сервере?

Не уверен, если это имеет значение, но когда я нахожу URL-адрес SeoHandler.ashx в своем домене, обработчик работает так, как предполагается.

Возможно ли, что веб-хост имеет некоторые настройки IIS, которые игнорируют мою запись в <httpHandlers>?

ответ

1

Я могу заставить его работать с IIS 7. Используете ли вы хостинг-провайдера, у которого есть что-то вроде URLScan? Можете ли вы увидеть, не установлены ли настройки по умолчанию на уровне сервера?

8

Проверить в IIS на сервере, что обработчик .NET не установлен, чтобы проверить требуемый путь физически существует:

  • Перейти к свойствам веб-сайта или виртуального каталога вкладки
  • Главная Каталог
  • Нажмите «Конфигурация» в нижней части
  • Найдите расширение для .ASPX и нажмите «Изменить», имеется флажок «Проверить, существует ли файл».

Если этот флажок установлен, .NET не будет обслуживать запросы, которые не отображаются в физическом файле в том же месте.

+0

Черт, все админы на мой хостинг компании не ушли до понедельника. Тьфу. Я направлю их туда, когда смогу их удержать. Спасибо Рексу! – core

+0

@ Крис ценит это, но вам, вероятно, стоит подождать, чтобы принять мой ответ после того, как вы подтвердили с администраторами, что это проблема :) –

+1

+1 Уже поздно. Мое развертывание пошло не так. Непроверено «Проверить файл существует» - успех! Я иду спать. –

1

Rex M получил правильный ответ, но я просто попробовал что-то похожее на handle .jpg, и это не удалось.

Флажок, подтверждающий, что файл существует, очень важен, но все же у вас есть проблема с авторизацией для этой папки.

Затем я попытался сменить новую сеть.config, который я добавил для этой папки и добавил

<authorization> 
         <allow users="*" /> 
    </authorization> 

И это сработало. Итак, что-то происходит с процессом авторизации, который не позволяет мне обрабатывать запросы .jpg. И да, я аутентифицирован в этом приложении, и он все еще терпит неудачу, если я попытаюсь запросить .jpg.

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

Смежные вопросы