2013-01-23 64 views
1

我有一個使用Windows身份驗證,在Web.config像這樣一個ASP.NET MVC 4項目:爲什麼ServiceSecurityContext.Current在MVC控制器中爲null?

<system.web> 
    <authentication mode="Windows" /> 
</system.web> 

但是,如果我調查ServiceSecurityContext.Current從控制器的方法,它爲空。因爲我使用Windows身份驗證,它不應該包含用戶的身份驗證信息嗎?

我試圖弄清楚這個問題的原因是因爲我想知道CredentialCache.DefaultNetworkCredentials從Controller方法中使用的憑據。從我通過閱讀MSDN article on the property得到的信息,它使用當前安全上下文的憑證...,它是空的。

感謝您的幫助!

回答

5

ServiceContext類旨在用於WCF服務內部。它與ASP.NET MVC無關。

試圖在ASP.NET MVC應用程序中使用ServiceContext.Current就像試圖在控制檯應用程序中使用HttpContext.Current =>您得到NULL。

我試圖算出這個的原因是因爲我想 知道什麼憑據CredentialCache.DefaultNetworkCredentials是 從控制器方法

然後你正在尋找User.Identity.Name財產使用:

[Authorize] 
public ActionResult Index() 
{ 
    string currentUser = User.Identity.Name; 
    ... 
} 
+0

太棒了,謝謝!我希望MSDN文章指向User.Identity.Name然後 - 所有它提到我看到的是「當前的安全上下文」,這就是爲什麼我堅持這一點。 – JoeCool

+0

你確定它等於User.Identity.Name而不是WindowsIdentity.GetCurrent()。Name?我注意到,只有WindowsIdentity.GetCurrent()。名稱在使用ASP.NET模擬時發生更改。 User.Identity.Name始終等於客戶端的用戶名 – JoeCool

相關問題