ShowProgramCode

2021年9月1日 星期三

C# ASP.NET的DEBUG模式下執行特定程式

 今天把程式放上IIS後,居然出現在本機測試沒有出現的Error。去查了LOG,回到程式碼查看後,發現程式跑了一段我在本機處理時不曾跑過的函式,函式中需要驗證的機器因為沒有設定,所以才出現了Error。

但是為什麼在本機測試時,一直沒有出現這樣的錯誤呢?

程式中出現了下面的內容,於是我上網去查了C#的說明。

#if(!DEBUG)

.......

#endif

直接先說結論,這段程式的意思大致是,程式在非Debug模式下執行,會進入裡面的內容。而我在本機一直是用Debug模式在執行程式,所以才沒有發現這個問題。

這其實是個好用的設定,偶爾我們需要在Debug的模式下特別紀錄某些LOG或者特別執行某些程式來做測試,利用這個的功能就可以不調整程式的前提下,將一般模式與Debug模式分開處理。

要如何設定這個功能呢?

首先,在web.config中確認<compilation debug="true"/>這個設定是正確的。

接著關於如何判斷是否在Debug模式下,則有兩種做法。

1.如上方所述,利用#if(DEBUG)判斷:

將所有要在DEBUG模式下執行的程式,放在#if(DEBUG)與#endif之間即可,比較直觀,但是之後修改不易,可能讓程式中佈滿相關的if。一旦要修改也很難找到正確的修改位置。

2.利用 ConditionalAttribute 屬性來判斷:

這部分我目前尚未實測過,不過相較之下看起來比較容易將相關的程式放在一起,之後維護起來也比較方便。

在DEBUG模式下要處理的函式加上[Conditional("DEBUG")]即可,參考如下。

[Conditional("DEBUG")]
Public void DebugLog()
{
......
}

日後有需要我應該會採用第二種做法,有時間也可能做個測試程式。

參考網頁如下:
https://dotblogs.com.tw/joysdw12/2014/03/14/asp-net-debug-release-if-else-conditional

沒有留言:

張貼留言