2010-10-07 75 views
1

我正在構建一個Web應用程序。 這就是我所做的。如何阻止發佈中顯示的源文件信息?

將解決方案Configuration Manager設置爲Release。 因此,所有項目都在構建發佈版本。 然後我清理解決方案並構建全部。 然後我「構建部署包」。

當從部署包運行已安裝的代碼時,我注意到當源文件出現編譯源時出現錯誤! 這怎麼可能,我正在構建Release配置。 源代碼絕對不在發行版中,因此它必須位於dll中。

有沒有辦法阻止它?

+1

這不太清楚......什麼是「當編譯源文件中出現錯誤時通知源文件出現」?你能改述一下,或者舉個例子嗎? – Kobi 2010-10-07 05:44:18

回答

2

假設你在談論'死亡黃頁'的ASP.NET錯誤頁面,顯示異常的源代碼位置;這是由於在構建和部署包中包含調試符號而發生的。這是與您的*.dll文件命名相同的*.pdb文件。

這並不壞,本身。但是,不應將這些錯誤顯示給最終用戶。即使沒有調試符號,這些錯誤消息也會顯示太多信息。您應該處理錯誤並向用戶顯示「安全且友好」的錯誤消息。

如果要刪除調試符號,可以刪除PDB文件。您還可以更改項目中的構建屬性,並刪除包含調試符號的選項。

+1

+1建議顯示友好(或備用)錯誤頁面。使用日誌記錄功能(例如nLog或企業庫日誌記錄應用程序塊等)應該將真正的異常記錄到磁盤或其他源。 – 2010-10-07 06:02:21

1

除了安德魯的回答,你還應該檢查你的web.config已經調試禁用:

<compilation debug="false"/>

這應該防止源代碼顯示在「死亡的黃色屏幕」。

+0

+1也可用於必須具備的建議。雖然我不是* 100%肯定的,但我認爲,因爲這隻影響Page/Control源編譯,而不影響預編譯的DLL,所以這可能不會影響從PDB文件顯示調試符號。 – 2010-10-07 06:27:36

+0

@Andrew Barber:.PDB文件只指向源文件和行號,它不包含實際的源代碼。只有在.PDB和源代碼都可用的情況下(例如在開發系統上),無論調試設置如何,都會顯示源代碼。 – 2010-10-07 23:12:30