2016-02-08 50 views
1

我有一個運行Windows身份驗證和模擬設置爲true的.net Web服務。當應用程序連接到數據庫時,它需要停止模擬並作爲應用程序池的服務帳戶運行。如何獲取.net Web服務調用以停止模擬執行任務

我的理解一直是停止模仿的方式我會運行下面的代碼。

WindowsImpersonationContext ctx = WindowsIdentity.Impersonate(IntPtr.Zero); 

,然後當我要重新啓動模擬

ctx.Undo(); 

但由於某些原因,當我運行我的代碼,它從不停止假冒主叫用戶,但將繼續作爲該用戶並不能連接到SQL數據庫使用集成的安全性,只有服務帳戶有數據庫訪問。

我在這裏錯過了什麼讓它正常工作?

+0

http://stackoverflow.com/questions/125096/can-i-turn-off-impersonation-just-in-a-couple-instances確認你的方法。當你說「它永不停止冒充」時,你是否知道從調試會話或僅僅因爲SQL連接失敗?在「expersonation」之後肯定是在同一個線程中進行的連接嘗試? – dlatikay

+0

啊......我不好意思,我沒有檢查身份的正確位置。它看起來工作得很好。我正在檢查HttpContext而不是WIndowsIdentity。 sql失敗是由於一個單獨的問題,似乎證實了我原來的假設。 – Bastyon

回答

0

看來,我使用的方法很好。這個錯誤是sql連接的一個問題,並且假設它是失敗的模擬。我通過使用錯誤的檢查來驗證身份,從而確認了我的假設。我原來的問題中的代碼確實起作用。