2014-01-22 34 views
1
try 
{ 
    value = System.DirectoryServices.AccountManagement.UserPrincipal.Current.UserPrincipalName; 
}  
catch (Exception e) 
{ 
    //handle exception 
} 

我試圖從System.DirectoryServices.AccountManagement.ni.dll調用一個方法來查找UPN用戶認證客戶機拋出。但是,在用戶的密碼已被管理員更改的情況下,該DLL會引發異常,我無法弄清楚爲什麼catch(Exception e)不處理它。這個例外是冒泡並取消我的申請。趕上(例外五)未捕獲的異常被託管的DLL

有什麼我需要做的,以趕上這個異常?

+1

非託管異常應該在非託管DLL中捕獲。你不能指望在你的託管代碼中捕獲它們。您需要修復DLL。 –

+0

問題是這不是我的dll,這是一個微軟的dll http://msdn.microsoft.com/en-us/library/system.directoryservices.accountmanagement.userprincipal(v=vs.110).aspx –

+0

這是一個託管的DLL。非託管DLL在哪裏? –

回答

1

如果不進入在問題的代碼的catch塊,那麼唯一的結論是,

value = System.DirectoryServices.AccountManagement.UserPrincipal. 
    Current.UserPrincipalName; 

不拋出異常。也許在執行這個語句的時候會拋出一個異常然後被捕獲。但是唯一可以達成的理智的結論是,你們所有的處理者並沒有抓住任何東西,因爲沒有什麼可以被抓住。