2009-06-29 4 views
2

Итак, вот в чем проблема. Мы запускаем Sitecore, который переписывает URL-адреса, и позволяет для чего-то вроде example.com/Folder/Page.aspx быть правильным URL-адресом.Перенаправленные URL-адреса URL-адреса IIS7 не работают с нефизическими файлами

Теперь «папка» на самом деле не существует в файловой системе, и ни одна из них «Page.aspx». Но эти URL работают, потому что ASP.NET делает то, что он должен.

Хорошо, теперь скажу, что я пытаюсь перейти на веб-страницу, которая не существует, например example.com/idontexist.html. Это не существует в файловой системе и не использует ASP.NET для разрешения файла, поэтому мы получаем ошибку IIS7 404.

Теперь я хочу изменить страницу ошибки 404 на страницу пользовательской ошибки, используя URL-адрес. Скажем, URL-адрес example.com/ErrorPage.aspx. Эта страница на самом деле не физическая страница, а элемент в Sitecore.

В конфигурации пользовательской ошибки в диспетчере IIS я пытаюсь изменить ошибку 404, чтобы указать на «перенаправление URL», и я использую «/ErrorPage.aspx» в качестве перенаправления URL. Когда я пытаюсь перейти к URL-адресу, который не существует, IIS7 взрывается с ошибкой, говорящей, что он не может найти /ErrorPage.aspx.

В IIS6 это не проблема, и все работает нормально. Но в IIS7 я перенаправляю URL, который физически не находится на сервере.

Помощь!

ответ

0

сделать очень длинную историю короткой, вот вещь:

1) настроить IIS таким образом, чтобы ошибки 404 перейти к «default.aspx» 2) создать страницу, которая на самом деле обрабатывает то, что вы хотите обработать.

Справочные ссылки, SDN оригиналы:

http://sdn5.sitecore.net/upload/sitecore6/handling_http_404_a4.pdf http://sdn.sitecore.net/upload/sitecore6/dynamic_links_a4.pdf

+0

Хорошо, обработка HTTP 404 PDF была реальная помощь. Я добавил процессор в конвейер, и это, казалось, сделало трюк. Проблема, с которой я столкнулся сейчас, заключается в том, что в IIS для элементов nonasp.net, таких как http://www.example.com/text.txt, если этого текстового файла нет, я попытался отобразить пользовательскую ошибку для выполнения URL /Default.aspx, но это дало мне ошибку. Кажется, что любое расширение * .aspx, которое я добавляю в функции пользовательской ошибки в IIS, возвращает общую ошибку 404. – Pete

+0

Да, IIS, как правило, не участвует в не-ASP известных расширениях. Вы можете либо A) нанести их на карту, чтобы .HTML, .TXT и т. Д. Перешли к .NET-обработчикам так же, как .aspx и .asmx и т. Д. - или B) Включить интегрированный конвейер (только для IIS7), который будет включать ASP.NET во всех запросах страниц. Однако оба варианта имеют несколько предостережений. –