Передать строку запроса на страницу 404 - PullRequest
1 голос
/ 31 марта 2012

В IIS 7 настроена обработка ошибок для пересылки на страницу 404, но строка запроса, кажется, никогда не передается.

Например, эта страница не существует, поэтому она направляет кСтраница 404:

www.mysite.com/nonexistingpage.aspx?id=1

На странице 404, в page_load, я не могу получить доступ к id = 1, потому что не похоже, что он когда-либо достигает страницы 404.Таким образом, попытка получить его с помощью этих методов не работает:

Request.UrlReferrer.PathAndQuery
Request.ServerVariables["HTTP_REFERER"]

В IIS мой путь вводится как: /404.aspx, а тип имеет значение: Выполнить URL.Как я могу гарантировать, что строка запроса будет передана на страницу 404?

Редактировать: В Fiddler перенаправление: /404.aspx?aspxerrorpath=/nonexistingpage.aspx, поэтому это подтверждает, что оно определенно не было переданоболее.

1 Ответ

1 голос
/ 31 марта 2012

Используете ли вы страницы ошибок ASP.NET или страницы ошибок IIS? Исходя из того, что вы говорите о перенаправлении в Fiddler, я думаю, что вы используете страницы ошибок ASP.NET, но ExecuteURL предлагает использовать страницы ошибок IIS. Или, может быть, вы смешали оба с ASP.NET, взяв верх.

Лучший вариант - использовать страницы ошибок IIS для страницы 404. Это позволяет вам делать то, что вы хотите:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <httpErrors>
            <remove statusCode="404" subStatusCode="-1" />
            <error statusCode="404" prefixLanguageFilePath="" path="/404.aspx" responseMode="ExecuteURL" />
        </httpErrors>
    </system.webServer>
</configuration>

Теперь, когда /404.aspx вызывается для ваших несуществующих страниц, строка запроса устанавливается на:

404;http://www.mysite.com/nonexistingpage.aspx?id=1
...