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

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

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


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

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

          1、先設(shè)置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"); //重新跳轉(zhuǎn)到上傳頁面,加上err參數(shù)是為了顯示錯誤信息
               }
              }
             
          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、搞定收工。(這魚沒有白吃啊)

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

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

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

          那就仔細(xì)專研第三種方式吧!

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

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

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


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

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

          1、先設(shè)置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"); //重新跳轉(zhuǎn)到上傳頁面,加上err參數(shù)是為了顯示錯誤信息
               }
              }
             
          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、搞定收工。(這魚沒有白吃啊)

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

           


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

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


          網(wǎng)站導(dǎo)航:
           

          常用鏈接

          留言簿(5)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 海南省| 夏河县| 峨山| 库伦旗| 万荣县| 疏附县| 南岸区| 杭锦旗| 绿春县| 马鞍山市| 三都| 遵化市| 启东市| 渝中区| 宣武区| 达尔| 乐东| 伊吾县| 宣化县| 台南市| 河津市| 鞍山市| 和田县| 德江县| 宣城市| 青冈县| 酉阳| 开江县| 漠河县| 扎赉特旗| 巩留县| 茌平县| 神池县| 荣成市| 中方县| 四平市| 驻马店市| 新泰市| 仁寿县| 庆城县| 榆社县|