none
Как правильно перенаправить пользователя после ошибки 324 RRS feed

  • Вопрос

  • Здраствуйте! ASP.NET 3.5, C#.
    Для загрузки файла на сервер использую FileUpload1.SaveAs(savePath).
    Лимит на обьем файла у меня прописан в web.config  как 
     
     <httpRuntime maxRequestLength="30960 " executionTimeout="360" requestLengthDiskThreshold="3060"/>
    Проблема в слудующем.
    Когда пытаюсь загрузить больше файл чем 30Мб возникает ошибка в Google Chrome: Ошибка 324 (net::ERR_EMPTY_RESPONSE): Сервер разорвал соединение, не отправив данные.
    Это вроде бы ожидаемо. Но мне надо вместо этого сообщения перенаправить пользователя на страницу с понятным ему обьяснением ошибки, о превышении лимита по обьему файла. Как это сделать проще?  Я попробовал прописать в config  и в програме следующее (см. ниже). Однако все осталось по прежнему. Почему? StatusCode не 324?  В IE вообще выдает только ошибку без кода. Код ошибки разный для разных броузеров? Можно ли как-то гарантировано перехватить эту ошибку для разных браузеров?  Заранее спасибо за ответ.
    <customErrors mode="RemoteOnly" defaultRedirect="~/Error_basu.aspx">
     <error statusCode="403" redirect="Error_basu.aspx" />
     <error statusCode="324" redirect="Error_upload.aspx" />
     <error statusCode="404" redirect="Error_basu.aspx" />
     </customErrors>
    в программе:
    try
      {
      FileUpload1.SaveAs(savePath);
      savePath = "";
      }
      catch (Exception ex)
      {
      Response.Redirect("~/Error_upload.aspx");
      }





    23 июня 2011 г. 19:01

Ответы

Все ответы

  • По-моему, ему просто не известно ничего о 324

    Вот здесь полный перечень кодов. Попробуй выбрать, что именно тебе подходит.

     

    24 июня 2011 г. 5:57
    Модератор
  • я забил абсолютно все коды(см.ниже) из Вашего списка в конфиг. Однако все равно нет переадресации. Что-то странное. <customErrors mode="RemoteOnly" defaultRedirect="~/Error_basu.aspx"> <error statusCode="100" redirect="~/Error_upload.aspx" /> <error statusCode="404" redirect="~/Error_upload.aspx" /> <error statusCode="200" redirect="~/Error_upload.aspx" /> <error statusCode="201" redirect="~/Error_upload.aspx" /> <error statusCode="202" redirect="~/Error_upload.aspx" /> <error statusCode="203" redirect="~/Error_upload.aspx" / ......
    24 июня 2011 г. 17:05
  • Стандартным способом - никак.

    Нестандартным - выставь стандартный лимит на запредельное значение, и проверяй своим кодом (например, кастомным модулем для IIS). Пример есть на http://nishantrana.wordpress.com/2009/01/19/fileupload-page-cannot-be-displayed-and-maximum-request-length-exceeded-error/


    My blog | My Favorite Project
    • Помечено в качестве ответа aaa75 25 июня 2011 г. 0:01
    24 июня 2011 г. 18:39
  • А есть ли возможность установить переход на определенную страницу при возникновении любых ошибок?    Меня бы это устроило.

    Dla lokalnogo servera Vasha idea rabotaet. Ondako na realnom saite vidaet oshibky:

    Google Ghrom: Ошибка 324 (net::ERR_EMPTY_RESPONSE): Сервер разорвал соединение, не отправив данные.

    IE:  HTTP Error 404.13 - Not Found The request filtering module is configured to deny a request that exceeds the request content length.

    Bred kakou-to.  

     Vopros:  1) proverka (sm. nige) rabotaet yge na strorone servera, t.e. kogda fail yge sagrygen?

    HttpContext context = ((HttpApplication)sender).Context;
     
    // check for size if more than 8 mb
     
    if (context.Request.ContentLength > 8096000)
    ....

     2) SilverLight govorat moget proverat' srasy razmer faila na storone usera. Voobche elementu SilverLight bydyt rabotat' na starix IE i t.d. ? 





    25 июня 2011 г. 0:11