2013-03-06 64 views
0

我想在我的ASP MVC3應用程序中使用Authorize類。不幸的是,由於業務規則,我需要從我們的web.config拉Roles,但是這是拋出以下異常:錯誤使用ConfigurationManager.AppSettings.Get()在ASP MVC3網站

An attribute must be a constant expression, typeof or array creation expression of an attribute parameter type 

這裏是我引用的代碼。

[Authorize(Roles = ConfigurationManager.AppSettings.Get("user"))] 
public class AdminController : Controller 
{ 

這裏是我的web.config的user部分

<add key="user" value="SA\\Application.MortalityConcentrationRA.Dev.Users" /> 
+0

你能告訴你的web.config的appsetting部分。 – 2013-03-06 18:39:06

+0

編輯到我的文章 – NealR 2013-03-06 19:36:42

回答

2

嘗試創建一個自定義的授權屬性是這樣的:

public class MyAuthorizeAttribute : AuthorizeAttribute 
    { 
     public MyAuthorizeAttribute() 
     { 
      this.Roles = ConfigurationManager.AppSettings["user"]; 
     } 

     protected override bool AuthorizeCore(HttpContextBase httpContext) 
     { 
      return base.AuthorizeCore(httpContext); 
     } 
} 

而在你的控制器使用這樣的:

[MyAuthorize] 
public class HomeController : Controller 
{ 
    //code here 
} 
0

恐怕你需要一個定製的授權屬性。我環顧了一下,沒有找到任何其他可能的解決方案。當前的屬性需要一個常量,我只是不知道如何讓你的config.AppSettings []永遠是一個常量值(它通過定義不是常量)。

看看this SO post,它幾乎可以解釋你需要做什麼。你的問題幾乎是這個問題的重複(這對你有好處,已經有了答案)。