我正在尝试在我的ASP MVC3应用程序中使用Authorize
类。不幸的是,由于业务规则,我需要从web.config中提取Roles
,但这会引发以下异常:
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 :(得分: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
}
答案 1 :(得分:0)
我担心您需要自定义授权属性。我环顾四周,没有找到任何其他可能的解决方案。当前属性需要一个常量,我只是不知道如何让你的config.AppSettings []永远是一个常量值(根据定义,它几乎不是常量)。
查看this SO post,它可以解释您需要做什么。你的问题几乎与这个问题重复(这对你有好处,已经有了答案)。