В файлах журнала IIS отображается переписанный, а не исходный URL-адрес

У меня проблема в том, что изменение способа перезаписи URL в приложении Asp.Net изменило файлы журнала IIS, чтобы они выглядели следующим образом:

/ page / 80 и т. д. / page / anotherpage / 80 и т. д.

to

default.aspx page = 1 80 и т.д ... default.aspx page = 2 80 и т.д ...

Я немного озадачен, как это произошло. Есть ли параметр, который мне не хватает (Win 2008, ASP.NET 2.0). Также был включен параметр runAllManagedRequests в.


person Bruce Chapman    schedule 05.12.2008    source источник


Ответы (4)


Перезапись URL выполняется модулем? Если это так, то возможно, что модуль перезаписи запущен до модуля регистрации. Вы можете изменить порядок запуска модулей в диспетчере IIS. Перейдите в Модули в диспетчере IIS и выберите Просмотреть упорядоченный список ...; затем вы можете перемещать модули вверх и вниз в нужном вам порядке.

person Daniel Richardson    schedule 07.01.2009

Я не знаю, какой метод вы используете для перезаписи URL-адресов, но я знаю, что с Apache (и ISAPI_Rewrite в Windows) вам нужно добавить флаг к каждому правилу в файле .htaccess (или его эквиваленте), чтобы он вел журнал переписанный URL, а не оригинал.

person Mark Bell    schedule 05.12.2008
comment
Это интересно. Изменение URL-адреса выполняется с помощью HTTP-модуля .net, а не DLL-библиотеки ISAP. Возможно, в методе перезаписи URL-адреса есть опция, позволяющая включить исходный URL-адрес. - person Bruce Chapman; 08.12.2008

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

person TheAlbear    schedule 05.12.2008
comment
При перезаписи исходного URL-адреса регистрировался «запрошенный» URL-адрес, а не перезаписанный URL-адрес. Так что есть способ сделать это, я просто не знаю какой. - person Bruce Chapman; 08.12.2008

Этот вопрос является дубликатом.

У меня была точно такая же проблема. Один из способов обойти это - использовать Server.Transfer вместо Context.RewritePath. Server.Transfer не перезапускает весь жизненный цикл страницы, поэтому исходный URL-адрес все равно будет регистрироваться. Обязательно передайте значение true для параметра preserveForm, чтобы коллекции QueryString и Form были доступны для второй страницы.

person David    schedule 17.02.2009