Properties.Settings没有setter

时间:2013-10-03 05:13:21

标签: c# asp.net settings.settings

我决定使用Properties.Settings为我的ASP.net项目存储一些应用程序设置。但是,在尝试修改数据时,我收到错误The property 'Properties.Settings.Test' has no setter,因为这是生成的,我不知道应该怎么做才能更改它,因为我以前的所有C#项目都没有出现过这个问题。

3 个答案:

答案 0 :(得分:18)

我的猜测是您使用Application范围定义了属性,而不是User范围。应用程序级属性是只读的,只能在web.config文件中进行编辑。

我根本不会在ASP.NET项目中使用Settings类。当您写入web.config文件时,ASP.NET / IIS会回收AppDomain。如果您定期编写设置,则应使用其他一些设置存储(例如您自己的XML文件)。

答案 1 :(得分:2)

正如Eli Arbel已经说过你不能从你的应用程序代码修改web.config中写的值。你只能手动执行此操作,然后应用程序将重新启动,这是你不想要的。

这是一个简单的类,可用于存储值并使其易于阅读和修改。如果您正在从XML或数据库中读取数据,并且根据您是否要永久存储修改后的值,请更新代码以满足您的需求。

public class Config
{
    public int SomeSetting
    {
        get
        {
            if (HttpContext.Current.Application["SomeSetting"] == null)
            {
                //this is where you set the default value 
                HttpContext.Current.Application["SomeSetting"] = 4; 
            }

            return Convert.ToInt32(HttpContext.Current.Application["SomeSetting"]);
        }
        set
        {
            //If needed add code that stores this value permanently in XML file or database or some other place
            HttpContext.Current.Application["SomeSetting"] = value;
        }
    }

    public DateTime SomeOtherSetting
    {
        get
        {
            if (HttpContext.Current.Application["SomeOtherSetting"] == null)
            {
                //this is where you set the default value 
                HttpContext.Current.Application["SomeOtherSetting"] = DateTime.Now;
            }

            return Convert.ToDateTime(HttpContext.Current.Application["SomeOtherSetting"]);
        }
        set
        {
            //If needed add code that stores this value permanently in XML file or database or some other place
            HttpContext.Current.Application["SomeOtherSetting"] = value;
        }
    }
}

答案 2 :(得分:-2)

下面: http://msdn.microsoft.com/en-us/library/bb397755.aspx

是解决您问题的方法。