2011-03-11 56 views
2

我目前正在寫負責管理用戶在一個ASPNETDB實例的用戶管理應用程序。此單個實例包含多個「應用程序」,這些「應用程序」都具有分配給各個應用程序的角色如何使Roles.ApplicationName線程安全?

由於每個用戶可以是多個應用程序的成員我使用Roles.ApplicationName循環通過每個配置的應用程序,然後確定它們中的一員,其作用。在檢查每個應用程序後,我將Roles.ApplicationName設置回管理應用程序的原始應用程序。

我遇到的問題是當多個用戶eachview單個應用程序和用於Roles.GetAllRoles()一個請求。大多數情況下,返回的角色是針對預期的應用程序的,但是由於其他請求在每個應用程序上循環使用Roles.ApplicationName,有時錯誤的應用程序角色會回來。

我已經讀了Roles.ApplicationName不是線程安全的,因此不應該在Web應用程序中使用,但我寧願有一個解決方案,而不必在應用程序中重寫角色模型。

此外,ASPNETDB應用通過該管理系統創建,因此我不能創建多個RoleProviders,每個應用程序之一。

回答

0

你爲什麼不寫一個包裝要做到這一點,從我的頭頂,你可以實現你自己的角色提供程序,然後把適當的同步到位。

+0

我通過包裝SqlRoleProvider和創建的方法準確鎖定做到了這一點。這似乎仍然導致問題。但是,當我包裝基本的RoleProvider對象,並手動調用適當的aspnetdb sps時,一切都很好。 – 2011-03-23 09:10:08