WebService文件上傳相關配置(404.13、超出限制、超時)


最近在做文件上傳的功能,遇到一些問題,記錄如下,以備以后使用。

1.HTTP Error 404.13 - Not Found,請求篩選模塊被配置為拒絕超過請求內容長度的請求。

IIS默認允許請求長度為4M,對於圖片文件來說足夠使用,但對於附件來說,這個限制就明顯不夠用了,需要在配置文件中加入一些設置。

<configuration>
  <system.web>
    <!--最大請求長度,單位byte,當前限制為1G,超時時間單位為秒,當前時間為1小時-->
    <httpRuntime requestValidationMode="2.0" maxRequestLength="1073741824" executionTimeout="3600"/>
  </system.web>  
  
  <system.webServer>
    <security>
      <requestFiltering>
        <!--最大允許請求長度,單位byte,當前限制為1G-->
        <requestLimits maxAllowedContentLength="1073741824"></requestLimits>
      </requestFiltering>
    </security>
  </system.webServer>
</configuration>

 

2.ASP.NET超時時間已到。

asp.net在默認情況下,超時時間為90秒,如果90秒內該請求還未有完成,就會返回超時的錯誤。

要在配置文件中設置超時時間即可,參考上面httpRuntime節點中executionTimeout的設置。

3.設置IIS配置(與設置配置文件等效)

*打開IIS,選擇需要操作的站點,雙擊右側ASP,找到限制屬性,設置腳本超時為60分鍾

*相應緩沖限制和最大請求實體主體限制都設置為1G(單位byte):1073741824,點擊右側應用

*選擇站點,雙擊右側配置編輯器,找到system.web節點下的httpRuntime,設置maxRequestLength為1073741824,應用

*再選擇system.webServer>security>requestFiltering,找到requestLimits,設置maxAllowedContentLength值為1073741824,應用

4.由於本次上傳采用的是WebService的方式,上傳完成后提示操作超時,於是給ws設置了超時時間

WebService ws = new WebService();
ws.Timeout = 3600000; /*單位毫秒,1小時*/

5.使用IE和Chrome瀏覽器測試,獲取上傳文件名時遇到一個問題

以前獲取文件名直接使用files[0],用IE瀏覽器調試時發現這樣獲取到的名字帶有F://xxx/這樣的盤符路徑,所以采用如下方式獲取文件名。

HttpFileCollection files = context.Request.Files;
if (files.Count > 0)
{
    /*獲取真實文件名,files[0].FileName這種方法在IE瀏覽器中上傳會帶有F://路徑*/
    string filename = System.IO.Path.GetFileName(files[0].FileName);
}

 

以上為本次上傳功能中遇到的問題,以后上傳相關的問題還會繼續記錄在本文中,如有錯誤之處,請大家指正。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM