發表文章

目前顯示的是 四月, 2011的文章

檔案上傳超出限制的處理作法

圖片
老生長談...整理一下相關作法:當你使用 FileUpload 上傳超過 4MB 的檔案時,可能會面臨無法上傳的問題。這是因為上傳內容的長度超過了maxRequestLength 參數在 Machine.config 檔案所定義的預設上限值 4096 (4 MB),這個限制是 ASP.NET 為了要預防可能的「拒絕服務」攻擊。你可以在 Web.config 檔案中,覆寫應用程式 maxRequestLength 的值,例如:但是,只要上傳檔案超過 Web.config的maxRequestLength 設定,用戶端就會收到以下的錯誤訊息:「無法顯示網頁:找不到伺服器或 DNS 錯誤」。如果你要在Page處理這個錯誤將會徒勞無功,因為這是屬於 Application 層級的錯誤,也就是 ASP.NET 早在執行你的網頁程式碼之前,就已經拋出「超出最大的要求長度」的例外。比較好的處理方式自訂WebModule註冊BeginRequest事件處理常式,在檔案未上傳前,先檢查 HTTP 標頭內容的長度,如果超過 maxRequestLength 的設定値,便將用戶端重新導向導引到自訂的錯誤頁面或導回原來的網頁。程式如下組態設定如下,須注意IIS6與IIS7有部分不同,IIS7的Module須放在System.WebServer內,並先將maxAllowedContentLength設大點,否則只要超出預設值4mb就連BeginRequest都不會觸發上述的完成後,若你在VisualStudio上是無法成功導頁的,還是會出現反白畫面,只能在IIS 或裝IS7.5 Express上測試此結果部分內容引述:http://renjin.blogspot.com/2008/03/large-file-uploads-in-aspnet.html

如何使用aspnet_complier.exe讓網站第一個瀏覽變快

圖片
前陣子User反應每天第一次執行某支程式都要等很久,本來一直以為是在資料第一次
載入Cache造成緩慢的問題,後來經測試後是因為該支程式的UI相當複雜,並使用
相當多的UserControl造成的。至於為何在第一次載入緩慢,這是因為在程式更新到網站後,是要等到網站的第一個使用者對該程式發出Request後,IIS才會將相關程式編譯成*.complier的副檔名檔案到
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\你的網站或虛擬目錄
以本例來說,就會產生很多*.ascx.complier的檔案而造成第一次要求的緩慢,而第二次執行後
就會飛快許多,但若你的網站只要bin底下的dll只要任何一個被更新過,那第一次編譯的動作就又要重來一次。
解決方法使用aspnet_compiler來幫IIS對網站內的所有程式進行編譯。Step1.在命令提示字元切換到對應的Framework版本目錄Cd C:\Windows\Microsoft.NET\Framework\v4.0.30319Step2.編譯你的網站或網站底下的應用程式,底下為網站及應用程式的語法參考a.編譯預設網站的虛擬目錄
aspnet_compiler -v /CLMWebvb.編譯-m對應路徑的網站,以下紅字5為網站的識別元,可以參考下圖的對應
aspnet_compiler -m /LM/W3SVC/5/ROOT執行完後你可以到Temporary ASP.NET Files 內查看對應的目錄,就會產生如下圖一堆看不懂的檔案XD
,這樣就大功告成囉
參考文章
http://msdn.microsoft.com/zh-tw/library/ms229863(v=vs.80).aspx