技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運(yùn)營(yíng)

贊助商

分類目錄

贊助商

最新文章

搜索

asp.net(c#)File控件讀取圖片或視頻等大文件出錯(cuò)的原因

作者:admin    時(shí)間:2018-5-24 10:47:2    瀏覽:

asp.net(c#)File控件讀取圖片小文件時(shí)沒有問題,但一旦要讀取圖片或視頻等大文件時(shí)便出錯(cuò),這是什么原因呢?最近遇到這個(gè)問題,急需解決。

代碼片段如下。

private void btnUpFiles_Click(object sender, System.EventArgs e)
{
  string pathName=this.File1.PostedFile.FileName.ToString();
  Response.Write(pathName);
}

很簡(jiǎn)單,就是用File控件獲得上傳文件的文件名。然而,這兩行代碼竟然顯示錯(cuò)誤。

我以為是取路徑字符串的問題,所以就先截取路徑和文件名,再截取文件的后綴名,分別保存為字符串,但是始終有錯(cuò)。代碼片段如下:

string fullname=this.File1.PostedFile.FileName.ToString();//取全路徑
string firstname=fullname.Substring(0,fullname.LastIndexOf(".")+1);//取路徑和文件名,去掉文件的后綴名
Session["firstname"]=firstname;//保存在一個(gè)session中

char [] spliter={'.'};//用來(lái)分割字符串的分割符
string [] fileName=this.File1.PostedFile.FileName.Split(spliter);//把全路徑分割后的每一部分保存在數(shù)組中
Session["lastname"]=fileName[fileName.Length-1];//把數(shù)組中的最后一個(gè)元素(即后綴名)保存為一個(gè)session
Response.Redirect("test.aspx");//我想傳到這個(gè)頁(yè)面測(cè)試。

以上方法依然出錯(cuò),錯(cuò)誤原因好象根本與字符串無(wú)關(guān)。

查了下相關(guān)資料,有網(wǎng)友提到是 httpRuntime 的問題。

根據(jù)網(wǎng)友的意見,在 web.config 中的<system.web></system.web>內(nèi)加入如下代碼:

<httpRuntime
  executionTimeout="600"
  maxRequestLength="951200"
  useFullyQualifiedRedirectUrl="true"
  minFreeThreads="8"
  minLocalRequestFreeThreads="4"
  appRequestQueueLimit="100"
  enableVersionHeader="true"/>

問題終于得以解決!原來(lái)確實(shí)是httpRuntime的問題。

以下是來(lái)自MSDN的解釋:

httpRuntime是配置asp.net http運(yùn)行時(shí)設(shè)置,以確定如何處理對(duì)asp.net應(yīng)用程序的請(qǐng)求。

  • executionTimeout:表示允許執(zhí)行請(qǐng)求的最大時(shí)間限制,單位為秒。
  • maxRequestLength:指示 ASP.NET 支持的最大文件上載大小。該限制可用于防止因用戶將大量文件傳遞到該服務(wù)器而導(dǎo)致的拒絕服務(wù)攻擊。指定的大小以 KB 為單位。默認(rèn)值為 4096 KB (4 MB)。
  • useFullyQualifiedRedirectUrl:表示指示客戶端重定向是否是完全限定的(采用 "http://server/path" 格式,這是某些移動(dòng)控件所必需的),或者指示是否代之以將相對(duì)重定向發(fā)送到客戶端。如果為 True,則所有不是完全限定的重定向都將自動(dòng)轉(zhuǎn)換為完全限定的格式。false 是默認(rèn)選項(xiàng)。
  • minFreeThreads:表示指定允許執(zhí)行新請(qǐng)求的自由線程的最小數(shù)目。ASP.NET 為要求附加線程來(lái)完成其處理的請(qǐng)求而使指定數(shù)目的線程保持自由狀態(tài)。默認(rèn)值為 8。
  • minLocalRequestFreeThreads:表示ASP.NET 保持的允許執(zhí)行新本地請(qǐng)求的自由線程的最小數(shù)目。該線程數(shù)目是為從本地主機(jī)傳入的請(qǐng)求而保留的,以防某些請(qǐng)求在其處理期間發(fā)出對(duì)本地主機(jī)的子請(qǐng)求。這避免了可能的因遞歸重新進(jìn)入 Web 服務(wù)器而導(dǎo)致的死鎖。
  • appRequestQueueLimit:表示ASP.NET 將為應(yīng)用程序排隊(duì)的請(qǐng)求的最大數(shù)目。當(dāng)沒有足夠的自由線程來(lái)處理請(qǐng)求時(shí),將對(duì)請(qǐng)求進(jìn)行排隊(duì)。當(dāng)隊(duì)列超出了該設(shè)置中指定的限制時(shí),將通過“503 - 服務(wù)器太忙”錯(cuò)誤信息拒絕傳入的請(qǐng)求。
  • enableVersionHeader:表示指定 ASP.NET 是否應(yīng)輸出版本標(biāo)頭。Microsoft Visual Studio 2005 使用該屬性來(lái)確定當(dāng)前使用的 ASP.NET 版本。對(duì)于生產(chǎn)環(huán)境,該屬性不是必需的,可以禁用。

您可能對(duì)以下文章也感興趣

標(biāo)簽: asp.net  File控件  
x