往往一個規范的開發Team中,一個新來者最容易讓這個Team的老隊員們感到頭痛。所以很多時候,我們都安排新員工一批的進來,並盡可能的給每個新手指派一個指導老師。
其實並非我們不看重這些新手的能力,事實上很多時候,他們的技術水平和編程能力非常非常的高,所以我們是害怕他們創新的力量,記憶中無數次了,經常是新來的人一臉委屈的解釋說,"我什麼也沒做",不過結果有時是災難的,比如VSS的某個項目文件被莫名破壞了,DailyBuild莫名中斷了,一個運行很穩定的模塊突然出現奇怪的Bug。甚至是一秒鐘前還能正常運行的程序,突然不能運行了。
那些所謂的老鳥,往往蒙頭大干很久,才發現原來原來,某個地方被小小修改了一下,而往往這種修改是這樣的機緣巧合。而更多的時候,這些老鳥,把這個問題程序化的變成了運氣說,運氣好,你能解決這個問題,運氣更好一點,你還能找到原因。
這兩天我們Team的一個老鳥就碰到了這樣的問題,ASP.NET的項目突然在一個新來的開發人員的機器上報下面的錯誤,老鳥又看到了委屈而無畏的神情---對方的潛意識在說,"我什麼也沒做,一分鐘前還好好的,突然就這樣了"
錯誤信息:
CS0016 : 未能寫入輸出文件
C:\Windows\Microsoft.NET\Framework\V1.1.4322\Temporary ASP.NET File\logtest\ae3a7b05\21b60d47\kxxnk5bg.dll --拒絕訪問
然後老鳥接著做了很多嘗試
關閉索引服務 --結果錯誤依舊!
重新啟動機器 ----結果錯誤依舊!
使用 aspnet_regiis.exe 重新注冊一下----結果錯誤依舊!
修改Network Services在Temporary ASP.NET File目錄下的權限到最高----結果錯誤依舊!
修改IIS Application Pool 的啟動用戶為系統用戶 ---成功
-----看來是network Service 用戶的權限問題,總算有了方向 找到了FileMon
10秒鐘發現了問題,原來Network Services 不能存取系統目錄的Temp目錄
ASP.NET 會使用這個目錄做編譯嗎? 但修改Network Services帳戶對Temp目錄的權限之後,問題解決了。
老鳥自己也很奇怪,ASP.NET為什麼會使用Temp目錄做某一個文件的即時編譯? 第二,為什麼剛剛還沒有問題的機器,突然需要做這樣的權限設置?
吃飯的時候,如果有酒,我們差點一起敬他一杯,因為---他的運氣不錯!