2014-01-10 99 views
1

在我的程序中,我有一個管理員可以向數據庫添加新角色的選項。這當然利用了System.Web.Security.RolesCreateRole方法:向網站地圖添加新角色

Roles.CreateRole(newRoleName); 

現在我想知道,是否有可能在運行時修改我SiteMap,以這樣的方式,新的角色會被添加到給定siteMapNode中的roles列表?例如:

<siteMapNode title="Admin Tools" roles="Admin" description=""> 

,如果我在哪裏插入一個名爲sampleRole新角色時,應的SiteMapNode是這樣的:

<siteMapNode title="Admin Tools" roles="Admin,sampleRole" description=""> 

應該怎麼我的身後看的代碼?

回答

1

有幾個原因不改變文件(儘管有可能):

  • 該文件是最有可能位於您的應用程序的應用程序目錄。如果您更改此目錄中的文件(例如web.config),IIS將重新啓動應用程序,以便其他用戶可能會遇到中斷。
  • 此外,由於性能原因,SiteMapProvider可能會緩存文件內容,以免發生更改。
  • 出於安全原因,應用程序池帳戶不應該能夠修改Web服務器上的文件。

但還有一個選擇:創建一個自定義SiteMapProvider,它確定節點的角色,以便它符合您的要求。有關詳細信息,請參閱此link