2009-12-02 16 views
0

我有一個使用Windows身份驗證的現有ASP.NET報告應用程序。很多報告生成代碼都在單獨的類中,並且有一個我沒有寫入的核心錯誤記錄器,我相信這個錯誤記錄器是爲Windows應用程序構建的,因爲它使用WindowsIdentity.GetCurrent()。Name。在ASP.NET的情況下,我相信這將返回在服務器上運行ASP.NET頁面的帳戶。ASP.NET獲取頁面之外的Windows用戶名

我相信在頁面上使用User.Identity.Name將是正確的方式來做到這一點,但它不是從報表生成類內僅在頁面上。有沒有辦法使用錯誤記錄器類來獲取它,而不將它作爲一個額外的參數傳遞。

有數百個報告類,所以我害怕必須通過併爲每個參數添加一個參數。

回答

2

如果你可以使用你的web.config模擬:

.... 
<authentication mode="Windows"/> 
<identity impersonate="true"/> 
.... 

報表類將得到正確的用戶。

如果你的報表類可以參考System.Web程序集,你願意修改代碼,你也可以這樣做:

HttpContext.Current.User.Identity.Name 

但要確保調用者來自一個ASP.NET請求,否則將拋出一個nullref。

+0

當然,HttpContext.Current.User.Identity.Name現在看起來很明顯,我將修改錯誤記錄器,以便從asp.net獲取此屬性。 – PeteT 2009-12-02 01:06:30