Хорошо, это может показаться немного запутанным и сложным, так что несите меня.Публикация форм 404 + HttpHandler в IIS7: почему все данные POST пропали?
Мы создали структуру, которая позволяет нам определять дружественные URL-адреса. Если вы просматриваете любой произвольный URL-адрес, IIS пытается отобразить ошибку 404 (или, в некоторых случаях, 403; 14 или 405). Тем не менее, IIS настроен таким образом, что все, что направлено на эти конкретные ошибки, отправляется в файл .aspx. Это позволяет нам реализовать HttpHandler для обработки запроса и делать вещи, которые включают в себя поиск связанного шаблона, а затем выполнение того, что связано с ним.
Теперь все это работает в IIS 5 и 6 и, в некоторой степени, на IIS7, но для одного улова, что происходит при отправке формы.
См., Когда вы отправляете форму несуществующему URL-адресу, IIS говорит «ах, но этот URL-адрес не существует» и выдает ошибку 405 «метод не допускается». Поскольку мы говорим, что IIS перенаправляет эти ошибки на нашу страницу .aspx и поэтому обрабатывает ее с помощью нашего HttpHandler, это обычно не проблема. Но с IIS7 вся информация POST пропала после перенаправления на 405. И поэтому вы больше не можете делать самые тривиальные вещи, связанные с формами.
Чтобы решить эту проблему, мы попытались использовать HttpModule, который сохраняет данные POST, но, как представляется, не имеет инициализированного сеанса в нужное время (когда это необходимо). Мы также пробовали использовать HttpModule для всех запросов, а не только отсутствующие запросы, которые попали на 404/403; 14/405, но это означает, что такие вещи, как изображения, css, js и т. Д. Обрабатываются кодом .NET, который ужасно неэффективен.
Это подводит меня к реальному вопросу: кто-нибудь когда-либо сталкивался с этим, и есть ли у кого-нибудь какие-либо советы или знаете, что делать, чтобы снова работать? Пока кто-то предложил использовать собственный URL Rewriting module. Помогло бы это решить нашу проблему?
Спасибо.
HttpHandler установлен в глагол = "*" (в web.config, а не applicationHost.config). Я не думаю, что это должно вызвать проблемы, не так ли? – Rahul 2008-09-19 16:20:51