為什麼在用File控制項讀取圖片、文檔、等檔案路徑的時候沒錯誤,而在讀取視頻檔案(如rmvb等)出現該頁無法顯示錯誤。其程式碼片段如下:
private void btnUpFiles_Click(object sender, System.EventArgs e)
{
string pathName=this.File1.PostedFile.FileName.ToString();
Response.Write(pathName);
}
我以為是取路徑字串的問題,所以就先截取路徑和檔案名稱,再截取檔案的尾碼名,分別儲存為字串,但是始終有錯。其程式碼片段
string fullname=this.File1.PostedFile.FileName.ToString();//取全路徑
string firstname=fullname.Substring(0,fullname.LastIndexOf(“".“")+1);//取路徑和檔案名稱,去掉檔案的尾碼名
Session[“"firstname“"]=firstname;//儲存在一個session中
char [] spliter={“‘.“‘};//用來分割字串的分割符
string [] fileName=this.File1.PostedFile.FileName.Split(spliter);//把全路徑分割後的每一部分儲存在數組中
Session[“"lastname“"]=fileName[fileName.Length-1];//把數組中的最後一個元素(即尾碼名)儲存為一個session
Response.Redirect(“"test.aspx“");//我想傳到這個頁面測試。以上方法依然出錯,錯誤原因好象根本與字串無關。
問題解決方案:在web.config中的system.web/system.web內加入如下代碼:
httpRuntime executionTimeout=“"600“" maxRequestLength=“"951200“"
useFullyQualifiedRedirectUrl=“"true“" minFreeThreads=“"8“"
minLocalRequestFreeThreads=“"4“" appRequestQueueLimit=“"100“" enableVersionHeader=“"true“"/
httpRuntime是配置asp.net http運行時設定,以確定如何處理對asp.net應用程式的請求。
executionTimeout:表示允許執行請求的最大時間限制,單位為秒
maxRequestLength:指示 ASP.NET 支援的最大檔案上傳大小。該限制可用於防止因使用者將大量檔案傳遞到該伺服器而導致的拒絕服務的攻擊。指定的大小以 KB 為單位。預設值為 4096 KB (4 MB)。
useFullyQualifiedRedirectUrl:表示指示用戶端重新導向是否是完整(採用 “"“" 格式,這是某些行動控制項所必需的),或者指示是否代之以將相對重新導向發送到用戶端。如果為 True,則所有不是完整重新導向都將自動轉換為完整格式。false 是預設選項。
minFreeThreads:表示指定允許執行新請求的自由線程的最小數目。ASP.NET 為要求附加線程來完成其處理的請求而使指定數目的線程保持自由狀態。預設值為 8。
minLocalRequestFreeThreads:表示ASP.NET 保持的允許執行新本地請求的自由線程的最小數目。該線程數目是為從本地主機傳入的請求而保留的,以防某些請求在其處理期間發出對本地主機的子請求。這避免了可能的因遞迴重新進入 Web 服務器而導致的死結。
appRequestQueueLimit:表示ASP.NET 將為應用程式排隊的請求的最大數目。當沒有足夠的自由線程來處理請求時,將對請求進行排隊。當隊列超出了該設定中指定的限制時,將通過“503 - 伺服器太忙”錯誤資訊拒絕傳入的請求。
enableVersionHeader:表示指定 ASP.NET 是否應輸出版本標題。Microsoft Visual Studio 2005 使用該屬性來確定當前使用的 ASP.NET 版本。對於生產環境,該屬性不是必需的,可以禁用。