我一直在使用基於授權屬性的MvcSiteMapProvider,直到我們引入了一個從AuthorizeAttribute
派生出來的新類,它才行。主要的區別在於它的構造函數簽名:將參數添加到AuthorizeAttribute構造函數會導致MvcSiteMapProvider失敗?
public MyAuthorizeAttribute(param RoleCode[] roles) {
Roles = string.join(",", roles.Select(r => r.ToString());
}
而且...... MvcSiteMapProvider出意想不到的結果:只有MyAuthorizeAttribute
標記的行動也變得不可見。我已經通過禁用這個構造函數來檢查 - 一切都像在向構造函數中添加參數之前一樣。另外 - 它不是params
具體 - 任何參數(事件int)導致這種行爲。
正如我從MvcSiteMapProvider來源所瞭解的,它發出了一些代碼來模擬授權屬性 - 但看起來像是不可能保存由外部代碼生成的程序集。我知道有一個解決方法 - 使用某種可枚舉的屬性,但你有任何建議如何使它與構造參數一起工作?你知道爲什麼MvcSiteMapProvider的行爲如此嗎?