1>今天一個朋友提出一個問題:
為什么在用file控件讀取圖片、文檔、等文件路徑的時候沒錯誤,而在讀取視頻文件(如rmvb等)出現該頁無法顯示錯誤。其代碼片段如下:
private void btnupfiles_click(object sender, system.eventargs e)
{
string pathname=this.file1.postedfile.filename.tostring();
response.write(pathname);
}
2>著手解決問題:
我以為是取路徑字符串的問題,所以就先截取路徑和文件名,再截取文件的后綴名,分別保存為字符串,但是始終有錯。其代碼片段如下:
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");//我想傳到這個頁面測試。以上方法依然出錯,錯誤原因好象根本與字符串無關。
3>網友“@@”提示是httpruntime問題(謝謝他):
問題解決方法:在web.config中的<system.web></system.web>內加入如下代碼:
<httpruntime executiontimeout="600" maxrequestlength="951200"
usefullyqualifiedredirecturl="true" minfreethreads="8"
minlocalrequestfreethreads="4" apprequestqueuelimit="100" enableversionheader="true"/>
4>來自msdn解釋:
httpruntime是配置asp.net http運行時設置,以確定如何處理對asp.net應用程序的請求。
executiontimeout:表示允許執行請求的最大時間限制,單位為秒
maxrequestlength:指示 asp.net 支持的最大文件上載大小。該限制可用于防止因用戶將大量文件傳遞到該服務器而導致的拒絕服務攻擊。指定的大小以 kb 為單位。默認值為 4096 kb (4 mb)。
usefullyqualifiedredirecturl:表示指示客戶端重定向是否是完全限定的(采用 "http://server/path" 格式,這是某些移動控件所必需的),或者指示是否代之以將相對重定向發送到客戶端。如果為 true,則所有不是完全限定的重定向都將自動轉換為完全限定的格式。false 是默認選項。
minfreethreads:表示指定允許執行新請求的自由線程的最小數目。asp.net 為要求附加線程來完成其處理的請求而使指定數目的線程保持自由狀態。默認值為 8。
minlocalrequestfreethreads:表示asp.net 保持的允許執行新本地請求的自由線程的最小數目。該線程數目是為從本地主機傳入的請求而保留的,以防某些請求在其處理期間發出對本地主機的子請求。這避免了可能的因遞歸重新進入 web 服務器而導致的死鎖。
apprequestqueuelimit:表示asp.net 將為應用程序排隊的請求的最大數目。當沒有足夠的自由線程來處理請求時,將對請求進行排隊。當隊列超出了該設置中指定的限制時,將通過“503 - 服務器太忙”錯誤信息拒絕傳入的請求。
enableversionheader:表示指定 asp.net 是否應輸出版本標頭。microsoft visual studio 2005 使用該屬性來確定當前使用的 asp.net 版本。對于生產環境,該屬性不是必需的,可以禁用。
新聞熱點
疑難解答