Thursday, April 12, 2007 - 文章

KB-W3SVC throw 0x800703e9 exception

今天幫忙排除一台主機的IIS問題,只要執行特定網頁,就會出現以下訊息:
JIT偵錯失敗,發生以下錯誤: 存取被拒。
JIT偵錯是使用者帳戶'NT AUTHORITY\NETWORK SERVICE'所啟動。
如需詳細資訊,請在文件索引中查看'Just-in-time偵錯,錯誤'。

事實上,這是一個表面的錯誤訊息,根本的問題不在於執行權限不對,或是有人Debug Web App失敗,而是執行ASP.NET的底層的.NET程式發生錯誤所致。真正的錯誤訊息則可以在事件檢視器中看到,W3SVC發出了以下的錯誤:

伺服應用程式集區 'DefaultAppPool' 的處理序已意外中止了。處理序識別碼為 '2488'。處理序結束碼為 '0x800703e9'。
(英文原文為A process serving application pool 'DefaultAppPool' terminated unexpectedly. The process id was '2488'. The process exit code was '0x800703e9'.)

這是一個很棒的錯誤訊息,用0x800703e9 Goggle一下就可以找到"Debugger Lady" Tess的Blog文章,裡面提到了一個案例,因為Exception Handling中又觸發同樣的Exception而導致無止盡的Recursive,最後以Recursion too deep, StackOverFow收場。我請同事特別檢查Exception Handling部分的Logic,果然找到以下的奪命陷阱:

pubic string GetDbCnnString()
{
    try
    {
        ...從web.config取得DbCnnString設定值...
    }
    catch (找不到值的Exception
    {
       
LogErrorToDb("找不到DbCnnString!");
    }
}

哈! 當找不到DbCnnString時,試著要將Error Log到DB,在LogErrorToDb()中少不了又要呼叫GetDbCnnString()。Bingo! 無窮迴圈~~~ 跟Debugger Lady所提到的Scenario完全相同。找到根源,問題當然就迎刃而解了,Case Closed!

題外話,我在Scott HanselmanBlogroll中見識到Debugger Lady這號人物,如Scott所形容的,她神奇到讓你覺得自己很笨。她的Blog上有一個又一個案例,解析龐大的Memory Dump檔,像CSI影集一樣抽絲剝繭,還原命案現場,然後揪出導致當機的凶手。只可惜自已在.NET Runtime上沒下什麼苦功,除了一邊看文章,一邊膜拜之外,永遠學不會她出神入化的.NET Debugging技巧。

KB-.NET Windows Form縮骨功?

我之前寫過一台潛盾機(潛盾機的典故後面再說),起因是手邊有幾個網站用的是NT整合式驗證,雖然有測試用的網域跟假帳號,但每次都得重開IE後輸入不同的帳號假扮不同的使用者,很令人抓狂。

所以我寫了一個小工具--IE Impersonate,可以先把不同的帳號密碼儲存起來,由它自動幫你開啟IE,連至特定URL,並在IE跳出登入對話框時自動填入預先指定的帳號、密碼,省去反覆輸入不同帳號密碼的困擾。

這個小程式真的可以省下可觀的按鍵次數及操作時間,很受到幾個常做網站測試同事的歡迎。不過,今天才得到消息,這個程式在部分機器上(Windows XP & Windows 2003都有)展現縮骨功,變成只有120px寬的怪樣子(正常應為430px)。

我懷疑是Windows Form雞婆,自作聰明調動了表單大小,所以認真查了一下Form1物件,看有沒有什麼可疑的屬性,結果發現了一個AutoScaleMode,預設為Font模式。這個名稱一看就讓人起疑,調了一下,設成Gdi或None之後,表單的顯示就完全正常了。

回頭查了一下,找到一篇關於AutoScaleMode的探討文章,而關於AutoScaling的官方文件在這裡

最後講一下潛盾機的由來。我是個很愛寫小工具改善工作方式的人,有一天同事小娟說了一個故事:

一個教授對他的三個博士班學生說:我們要到高山另一頭的村子買瓶醬油。
第一個學生乖乖地爬了一個月的山,終於把醬油買回來;第二個學生花了數年研發挖山洞專用的TDM潛盾機,並發表三篇Paper拿到博士學位;第三個學生則跑到兩條街外的7-11,五分鐘就把醬油買回來了。

而我就是那個該死的第二個學生,專案常常會Delay不是沒原因的。

搜尋

Go

<April 2007>
SunMonTueWedThuFriSat
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345
 
RSS
【工商服務】
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


BlogLook Score and Rank

Syndication