2015-01-14 70 views
0

我們在ASP.NET Web表單Intranet站點中具有自定義角色提供程序。我們確保這個類繼承自RoleProvider並實現適當的方法。但是,很明顯它的方法沒有被調用,包括初始化。我們在web.config中的以下內容:使用Windows身份驗證的自定義角色提供程序

<authentication mode="Windows" /> 

<authorization> 
    <allow roles="CRM"/> 
    <deny users="?"/> 
</authorization> 

<roleManager defaultProvider="MyRoleProvider" 
    enabled="true" 
    cacheRolesInCookie="true"> 
    <providers> 
     <clear /> 
     <add 
      name="MyRoleProvider" 
      applicationName="MyApp" 
      type="MyApp.MyRoleProvider" 
      writeExceptionsToEventLog="false" /> 
    </providers> 
</roleManager> 

應當指出的是,我們已經回顧this的問題,但它的答案並不適用於我們的情況。

+0

您是否嘗試過向eventviewer寫入錯誤並檢查了寫入的異常? –

回答

1

我覺得自己像一個傻子不得不提供這個答案,但希望它可以幫助那些有類似麻煩的人。雖然似乎所有的證據都指出了自定義角色提供者沒有被調用,但實際上是這樣。由於我們的角色被緩存,似乎沒有被調用。正如你可以在上面的代碼片段看,我們有以下幾點:

cacheRolesInCookie="true"> 

這引起了角色管理器拉,我們沒有想到的角色,因爲我們是在測試過程中對它們進行處理。當我們將該屬性更改爲「false」時,所有事情都按預期開始工作。

+1

你不是個傻瓜先生。我花了數小時試圖弄清楚爲什麼CustomRoleProvider代碼沒有被調用(斷點沒有命中)。謝謝。 – Jack

相關問題