我正在ASP.NET網站上工作,我想部署pdb文件,因爲當發生意外的異常時,我想將它們記錄在的行號中,以便我可以找出問題所在。是否有任何理由不將pdb文件部署到生產Web服務器?
但我擔心安全和性能。
如果我使用堆棧跟蹤信息登錄到Web服務器上的非公用文件並且不向用戶顯示,那麼在Web服務器上安裝pdb文件是否存在安全風險?
就性能而言,我知道在有pdb文件時處理異常代價更高,但目標不是有任何異常,並且在極少發生異常情況時要獲得良好的跟蹤數據我們可以解決這個問題。
但是我不清楚的一件事是:如果拋出異常並被捕獲,我還支付pdb的處罰嗎?我特別想到當你Response.Redirect
時拋出的ThreadAbortException。這是一個傳統的應用程序,其中包括很多這些作爲正常程序流程的一部分,所以我只是捕捉並忽略這些異常,但是pdb文件的存在會使這種成本更高嗎?或者.NET會忽略pdb文件,除非你詢問堆棧跟蹤(對於這個特殊的例外情況,我不這麼做)?
除此之外,只要除了我真的想詳細瞭解的那些外,沒有任何例外,是否會將部署pdb文件的性能影響到Web服務器?
感謝您的快速響應。你可以專門針對ThreadAbortException場景發表評論嗎?如果應用重定向並拋出其中一個,並且我忽略並忽略它,那麼是否支付pdb查找罰款? –
@JoshuaFrank我還不清楚爲什麼你認爲異常會引用PDB。他們可能會做得很好,但據我所知,他們不會 – JaredPar
我想我不清楚什麼時候,確切地說,pdb文件是用來查找符號。是在拋出異常時,還是在異常處理程序代碼要求堆棧跟蹤數據時?我特別要求這是因爲對另一個SO問題的評論,在問題的上下文中,這聽起來像是當異常被**拋出時支付查找代價**:http://stackoverflow.com/questions/381537 /部署-pdb-files-in-iis-any-benefit#comment16486391_382087 –