我目前正在用ASP.NET Azure AD登錄完成我的ASP.NET MVC網站。Asp.net MVC azure廣告組標識
對於本網站,某些頁面只能由管理員訪問。對於這一點,我做了的命名testAdmins
一個新的小組,當我檢查,如果用戶可以訪問一個網頁,我用這個:
ClaimsPrincipal principal = User as ClaimsPrincipal;
if (principal.Claims.Any(x => x.Type == "groups" && x.Value == "id of testAdmins")){ //code }
而且它的正常工作與我的用戶女巫這一組。
但是,當我將testAdmins
的ID更改爲真實組管理員的值(Admins
)時,我將在網站將部署時使用,並且我不在時,服務器不顯示任何內容爲40秒,然後我得到這樣的信息:
類型的異常「System.Web.HttpException」發生在 System.Web.dll中但在用戶代碼中沒有處理
其他信息:無法連接到SQL Server數據庫。
有人能解釋我發生了什麼事嗎?
在此先感謝
PS:我做了一些更多的測試...當我的用戶是該組中它的工作速度快,但時,它不是需要2分鐘,並做了錯誤信息......如果有人爲不知道有什麼問題,有沒有人有辦法讓來自用戶的不同訪問權限在Azure Active Directory的特殊組中?
Omg真的嗎?你確定嗎?因爲如果我在小組中,它是行得通的......也許他看起來太過分了,因爲'principal.Claims.Any(x => x.Type ==「groups」&& x.Value = =「testAdmins的id」)'太大了? – MrPixel6
ClaimPricipal的聲明屬性是由OpenID Connect Owin中間件初始化的收集屬性。當您查詢此屬性時,無法訪問任何數據庫。而且它不會造成超時。去看看關於ClaimsPrincipal和它的Claims屬性的文檔,mrPixel!您還可以執行一些JustDecompile來檢查ClaimsPrincipal類型,並親眼看到沒有調用DB。 – astaykov
好的,謝謝你的幫助! – MrPixel6