摘要:[ASP.NET]IIS7.0 + delphi元件的怪問題(未解)
這兩天在解一個奇怪的問題,我有一個delphi寫的dll元件,這個元件在Windows Server 2003 + IIS 6.0上跑一切正常,但是到了Windows Server 2008 + IIS 7.0上跑就有問題,而出現的錯誤更是非常的奇怪,完全沒有exception,只能在事件檢視器中看到一個Application Error的錯誤訊息,而出現此錯誤訊息時,整個w3wp是直接crash掉了,拿事件檢視器中的訊息,HTTPERR中的錯誤訊息上網查詢,也沒查出什麼所以然。
後來陸續做了幾個嘗試:
1.把delphi元件寫成COM(OK)
2.用Winform呼叫該delphi dll(OK)
3.用Winfform呼叫delphi COM(OK)
做完前三個測驗後,直覺認為與IIS有關聯,因為在事件檢視器的系統錯誤中看到這個錯誤訊息,但是什麼原因,還是沒有頭緒,接著想到該主機上有安裝VS 2008,就想說用他的ASP.NET開發伺服器來執行看看,執行的結果出乎我意料之外,竟然可以跑,酷斃了,趕緊上網查一下ASP.NET開發伺服器與IIS之間有什麼差異,一查就找到這篇:
Core Differences Between IIS and the ASP.NET Development Server
裡頭提到第一點,權限問題:使用ASP.NET開發伺服器,預設登入站台的使用者是你現在登入Windows的使用者帳號,也就是本機系統權限;而用IIS登入預設則是IUSR_電腦名稱,這兩者之間是有很大的權限差別,乍看之下,好像跟我想像的有點接近了,趕快試一下,把IIS的權限開放到最大試看看,結果讓人失望了,還是不行....
後來又仔細想想,ASP.NET的開發伺服器是依存於WebDev.WebServer.exe,而IIS的處理序則依存於w3wp.exe,所以上文中提到兩者只有兩個差異,感覺有些不足,是否還有其它沒提到的地方呢?這部分要再多花點時間找看看解法了。
游舒帆 (gipi) 探索原力Co-founder,曾任TutorABC協理與鼎新電腦總監,並曾獲選兩屆微軟最有價值專家 ( MVP ),離開職場後創辦探索原力,致力於協助青少年培養面對未來的能力。認為教育與組織育才其實息息相關,都是在為未來儲備能量,2018年起成立為期一年的專題課程《職涯躍升的關鍵24堂課》,為培養台灣未來的領袖而努力。 |