修改Webcong文件:
          <system.web>
          <httpRuntime maxRequestLength="40690"
                   useFullyQualifiedRedirectUrl="true"
                   executionTimeout="6000"
                   useFullyQualifiedRedirectUrl="false"
               minFreeThreads="8"
               minLocalRequestFreeThreads="4"
                appRequestQueueLimit="100"
                enableVersionHeader="true"
                   />
          </system.web>

          其中與上傳有密切關系的是:
          maxRequestLength
             指示 ASP.NET 支持的最大文件上載大小。
             該限制可用于防止因用戶將大量文件傳遞到該服務器而導致的拒絕服務攻擊。
             指定的大小以 KB 為單位。
             默認值為 4096 KB (4 MB)。

          executionTimeout
             指示在被 ASP.NET 自動關閉前,允許執行請求的最大秒數。
             單位為秒,在上傳大的文件時把這個設的大一些。


          如果服務器內存512M,已可上傳大小160M的文件。(沒試過,csdn上眾帖子的一致意見。)
          '
          到這里web.config的設置就已經結束。
          可是一旦上傳文件的大小超過了這個設置的文件大小范圍就會發生如下錯誤:
          該頁無法顯示
          您要查看的頁當前不可用。網站可能遇到技術問題,或者您需要調整瀏覽器設置。

          雖然解決不了,那也要捕獲這個錯誤??!怎么辦呢?
          最近吃了幾條魚,想了想,由于這個錯誤是由file控件引發的前臺錯誤,所以在后臺想利用try...catch來捕獲是行不通的。
          于是想到了利用.NET的錯誤捕獲頁面的機制來處理??尚信?。

          1、先設置web.config
            <customErrors mode="On"/>
          2、新建一個error.aspx 文件,專門用來捕獲錯誤的。
          3、在上傳文件的aspx頁面的前臺頁面里添加page指令。ErrorPage="UploadError.aspx"
          4、在error.aspx中添加一些代碼來判斷錯誤信息是否是file引起的前臺錯誤。
             public class UploadError : System.Web.UI.Page
             {
              private void Page_Load(object sender, System.EventArgs e)
              {
               Exception ex = Server.GetLastError();
               if (ex != null)
               {
                Response.Redirect("../error.aspx");
               }
               else //前臺錯誤ex為空值
               {  
                Response.Redirect("uploadexcel.aspx?err=1"); //重新跳轉到上傳頁面,加上err參數是為了顯示錯誤信息
               }
              }
             
          5、顯示錯誤提示。
             public class uploadexcel : System.Web.UI.Page
             {
              private void Page_Load(object sender, System.EventArgs e)
              {
               if (Request["err"] == "1")
               {
               Page.RegisterStartupScript("budget","<script language = javascript>alert('Upload file has failed ! File size is too large !')</script>");
               }
              }
             }
            
          6、搞定收工。(這魚沒有白吃啊)

          經過上述修改,現在的上傳變成了,程序指定文件大小,如果超過,則彈出錯誤提示。
          這樣一來,就好多了,最起碼自己能接受了,跟用戶解釋也不太費勁了。

          在遍歷了csdn中所有關于上傳大文件的帖子以后,寫了這片垃圾。(:-))
          上傳大文件,有好幾種方法:
          1、思歸的HttpWorkerRequest方法,太難,看不懂:-(
          2、利用第三方的控件 AspNetUpload 要錢??!算了,咱還是喜歡免費的。
          3、修改web.config文件,但是不能捕獲錯誤。
          4、通過ftp的方式上傳。服務器需要提供ftp服務。

          沒轍,只好選第三種方式,誰讓咱太蠢了呢!(太蠢了,沒有關系,要多吃魚,聽說吃魚能聰明點。)

          那就仔細專研第三種方式吧!

          修改Webcong文件:
          <system.web>
          <httpRuntime maxRequestLength="40690"
                   useFullyQualifiedRedirectUrl="true"
                   executionTimeout="6000"
                   useFullyQualifiedRedirectUrl="false"
               minFreeThreads="8"
               minLocalRequestFreeThreads="4"
                appRequestQueueLimit="100"
                enableVersionHeader="true"
                   />
          </system.web>

          其中與上傳有密切關系的是:
          maxRequestLength
             指示 ASP.NET 支持的最大文件上載大小。
             該限制可用于防止因用戶將大量文件傳遞到該服務器而導致的拒絕服務攻擊。
             指定的大小以 KB 為單位。
             默認值為 4096 KB (4 MB)。

          executionTimeout
             指示在被 ASP.NET 自動關閉前,允許執行請求的最大秒數。
             單位為秒,在上傳大的文件時把這個設的大一些。


          如果服務器內存512M,已可上傳大小160M的文件。(沒試過,csdn上眾帖子的一致意見。)
          '
          到這里web.config的設置就已經結束。
          可是一旦上傳文件的大小超過了這個設置的文件大小范圍就會發生如下錯誤:
          該頁無法顯示
          您要查看的頁當前不可用。網站可能遇到技術問題,或者您需要調整瀏覽器設置。

          雖然解決不了,那也要捕獲這個錯誤啊!怎么辦呢?
          最近吃了幾條魚,想了想,由于這個錯誤是由file控件引發的前臺錯誤,所以在后臺想利用try...catch來捕獲是行不通的。
          于是想到了利用.NET的錯誤捕獲頁面的機制來處理??尚信丁?/p>

          1、先設置web.config
            <customErrors mode="On"/>
          2、新建一個error.aspx 文件,專門用來捕獲錯誤的。
          3、在上傳文件的aspx頁面的前臺頁面里添加page指令。ErrorPage="UploadError.aspx"
          4、在error.aspx中添加一些代碼來判斷錯誤信息是否是file引起的前臺錯誤。
             public class UploadError : System.Web.UI.Page
             {
              private void Page_Load(object sender, System.EventArgs e)
              {
               Exception ex = Server.GetLastError();
               if (ex != null)
               {
                Response.Redirect("../error.aspx");
               }
               else //前臺錯誤ex為空值
               {  
                Response.Redirect("uploadexcel.aspx?err=1"); //重新跳轉到上傳頁面,加上err參數是為了顯示錯誤信息
               }
              }
             
          5、顯示錯誤提示。
             public class uploadexcel : System.Web.UI.Page
             {
              private void Page_Load(object sender, System.EventArgs e)
              {
               if (Request["err"] == "1")
               {
               Page.RegisterStartupScript("budget","<script language = javascript>alert('Upload file has failed ! File size is too large !')</script>");
               }
              }
             }
            
          6、搞定收工。(這魚沒有白吃啊)

          經過上述修改,現在的上傳變成了,程序指定文件大小,如果超過,則彈出錯誤提示。
          這樣一來,就好多了,最起碼自己能接受了,跟用戶解釋也不太費勁了。

           


          文章來源:http://www.cnblogs.com/wangdetian168/archive/2008/06/25/1229963.html
          posted on 2010-09-28 11:02 sanmao 閱讀(223) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          常用鏈接

          留言簿(5)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 苏尼特左旗| 东城区| 金坛市| 漳浦县| 南城县| 都昌县| 兴和县| 木兰县| 钟祥市| 晋江市| 聊城市| 阿拉善盟| 东乡族自治县| 商丘市| 靖江市| 廉江市| 宣汉县| 富锦市| 巨鹿县| 娄烦县| 长岭县| 大石桥市| 南汇区| 大连市| 沙洋县| 正镶白旗| 海淀区| 张家界市| 南部县| 陆河县| 蚌埠市| 大城县| 华亭县| 嘉荫县| 英山县| 保德县| 日喀则市| 磐石市| 大足县| 深泽县| 义马市|