2011-02-14 74 views
0

我有一個ASP.NET應用程序,它使用nHibernate的IPreUpdateListener來記錄審計報告。爲了設置Listener事件中的當前用戶,我使用了System.Security.Principal.WindowsIdentity.GetCurrent()。這在我的機器上調試時工作正常,但是當我將它移動到登臺服務器時,我得到的是ASP.NET進程憑據,而不是請求用戶。在請求範圍之外檢索Web用戶的標識

在ASP.NET頁面中,我可以使用Request.LogonUserIdentity(因爲我使用集成身份驗證而工作正常),但是如何直接引用此用戶而不必將其直接傳遞給我的事件?我不想通過管道傳遞這些信息,因爲它實際上不屬於中間事件/調用。

回答

1

如果代碼在ASP.NET上下文中執行,HttpContext.Current(靜態)包含當前的Http上下文。你可以隨時測試它是否爲空。如果不爲零,您將能夠獲得HttpContext.Current.Request

但是,駐留在此請求上下文中的標識最終取決於網站(IIS,Cassini,IIS Express或自定義)如何處理標識。

+0

完美。我花了一分鐘才意識到我不得不在我的項目中添加對System.Web的引用,但現在一切都按預期工作! – Kendrick 2011-02-14 16:45:18