Как различить / (корень) и /default.aspx в ASP.NET - PullRequest
4 голосов
/ 05 апреля 2010

Request.RawUrl всегда возвращает вариант / default.aspx . Я не нашел способа вообще различать эти URL. Кто-нибудь знает, как это сделать? Среда - .NET 3.5SP1 на IIS 7.

1 Ответ

1 голос
/ 05 апреля 2010

Мне действительно пришлось бороться с этой же проблемой при разработке моего URL Rewriter . Это связано с процессами, которые происходят, прежде чем вы даже можете получить доступ к URL-адресам. Чтобы обойти это, вы должны убедиться, что в IIS 7 обработка страниц по умолчанию отключена. Потому что, если нет обработки страницы по умолчанию, она не будет проходить дополнительный шаг, пытаясь сопоставить ее с диском, поэтому вы получите точный запрошенный URL-адрес. Но это может или не может быть вариантом в зависимости от того, используете ли вы System.Web.Routing или нет.

Чтобы отключить обработку страниц по умолчанию, вам нужно сделать следующее:

  1. Перейти на ваш сайт в IIS
  2. Перейти к Документ по умолчанию
  3. Нажмите Отключить в правом верхнем углу.

Или вы можете добавить следующее к вашему web.config:

<system.webServer>
    <!-- ... other tags here ... -->
    <defaultDocument enabled="false" />
</system.webServer>

После этого документ по умолчанию больше не будет добавляться к вашему URL. Однако предупреждаем , что, поскольку это больше не активно, вы не можете полагаться на default.aspx, фактически отображающий ваши каталоги, вам придется обрабатывать это вручную или использовать что-то вроде System.Web.Routing для обработки этой функциональности. * * 1026

Чтобы сделать то же самое в IIS 6, вам нужно включить символы подстановки:

Следующие инструкции применимы к IIS 6.

  1. Откройте IIS, щелкните правой кнопкой мыши веб-сайт и выберите «Свойства».
  2. Нажмите кнопку «Конфигурация» в разделе «Настройки приложения»
  3. Нажмите кнопку «Вставить ...», чтобы создать новое сопоставление с подстановочными знаками
  4. Установите для исполняемого текстового поля местоположение файла aspnet_isapi.dll. для .net 2.0, 3.0, 3.5: C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll
  5. Убедитесь, что флажок «Убедитесь, что файл существует» не установлен.
  6. Нажмите «ОК» для подтверждения и закрытия всех окон.

ПРИМЕЧАНИЕ: кстати, все источники доступны на сайте, на который я ссылался выше, если вам интересно, как я это делаю.

...