При использовании HttpHandler для обработки 404-х в .NET 4.0, как определить текущий путь? - PullRequest
3 голосов
/ 03 февраля 2012

Мое приложение использует правило HttpErrors в web.config для перенаправления 404-х в пользовательский HttpHandler:

<handlers>
  <add name="MyHandler" path="/default.aspx" verb="*" type="MyHandler.HttpHandler" />
</handlers>

<httpErrors errorMode="Custom">
  <remove statusCode="404" />
  <remove statusCode="405" />
  <error statusCode="404" path="/default.aspx" responseMode="ExecuteURL" />
  <error statusCode="405" path="/default.aspx" responseMode="ExecuteURL" />
</httpErrors>

В .NET 2.0 это работает нормально. Теперь я хочу преобразовать свое приложение в .NET 4.0, и это вызывает проблемы.

Проблема в том, что когда запрос направляется в HttpHandler, я проверяю значение Request.Path, чтобы определить, какую страницу я просматриваю.

В .NET 2.0 Request.Path будет иметь значение, т.е. /page/subpage/item. В .NET 4.0 это относится к /default.aspx.

Проверка Request не дает мне никаких других свойств, которые выглядят как что-то, что я мог бы использовать - такие вещи, как RawUrl и Url, все включают строки запросов и другие ненужные ненужные мне вещи. Я просто хочу текущий путь.

Как я могу решить эту проблему?

...