ASP.NET属性参数必须是常量表达式

时间:2014-02-28 08:15:34

标签: c# asp.net authorization

在我的ASP.net项目中,我使用Authorization仅允许作为给定组成员的用户。为了使这个网站的未来所有者更容易,我正在调整角色。我尝试执行以下操作:

SettingsController set = new SettingsController();

private string Roles()
{
    return set.settingsGroup;
}

[Authorize(Roles = Roles())]
....

现在set.settingsGroup返回一个从XML文件解析的字符串。 但是当我尝试在授权上设置它时我得到了错误

  

非静态字段,方法或者需要对象引用   属性

我不完全理解这个错误,所以我要求你们和男孩们帮忙。

所以不要害羞。

__ _ __ _ __ _ __ _ __ _ _ 更新 _ __ _ __ < EM> _ __ _ __ _ __ _ __

所以在一些帮助下,我现在明白我必须做什么。 作为一个解决方案,我将de function role设为static,并创建了一个新的SettingsController实例。

private static string Roles()
{
    SettingsController set = new SettingsController();
    set.parseXML();
    return set.settingsGroup;
}

但现在当我在授权中调用Roles()时会出现一个更长的新错误:

  

属性参数必须是常量表达式,typeof表达式   或属性参数类型

的数组创建表达式

因此,如果我尝试阅读此错误,似乎是使用Roles()函数给出属性或参数。这不是正确的类型。但我不提供任何参数吗?

1 个答案:

答案 0 :(得分:2)

您正在从静态方法调用非静态属性。您需要将属性设置为静态,或者在Roles函数

中创建set的实例