C# 配置管理设置在其他计算机上不起作用

C# 配置管理设置在其他计算机上不起作用,c#,C#,我更改项目中连接字符串的设置,如下所示: var settings = ConfigurationManager.ConnectionStrings[2]; var fi = typeof(ConfigurationElement).GetField("_bReadOnly", BindingFlags.Instance | BindingFlags.NonPublic); fi.SetValue(settings, false);

我更改项目中连接字符串的设置,如下所示:

        var settings = ConfigurationManager.ConnectionStrings[2];
        var fi = typeof(ConfigurationElement).GetField("_bReadOnly", BindingFlags.Instance | BindingFlags.NonPublic);

        fi.SetValue(settings, false);
       // settings.ConnectionString = "Provider=SQLOLEDB.1;Password=XXX;Persist Security Info=True;User ID=sa;Initial Catalog=InsuranceDB;Data Source=ERNA2";
        //settings.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\database\InSuranceDB.accdb;Persist Security Info=True;Jet OLEDB:Database Password=XXX";
        int onlineMode = int.Parse(File.ReadAllText("onlineMode.obj"));
        if (onlineMode==1)
        {
            settings.ConnectionString = @"Provider=SQLOLEDB.1;Password=XXX;Persist Security Info=True;User ID=sa;Initial Catalog=InsuranceDB;Data Source=TABARI\SAMA2008";
           // settings.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\database\InSuranceDB.accdb;Persist Security Info=True;Jet OLEDB:Database Password=XXX";
        }
        else
        {
            settings.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\database\InSuranceDB.accdb;Persist Security Info=True;Jet OLEDB:Database Password=XXX!";
        }
        File.WriteAllText("onlineMode.obj", "1");
它在我的计算机中运行良好,但发布后不起作用,应用程序从app.config读取数据。你能帮我解决这个问题吗?
我还删除了条件,但没有解决问题:

我猜运行应用程序的用户没有权限修改部署位置中的配置文件

在任何情况下,为什么要从另一个文件onlineMode.obj读取配置设置?似乎更安全的方法是在配置文件中同时使用连接字符串和onlineMode,然后在应用程序中选择适当的连接字符串


如果只是用代码中的硬编码值覆盖配置文件,那么将连接字符串写入配置文件又有什么意义呢?

因为.net在尝试从设置读取联机模式时存在错误。当我使用if他做条件但不正确应用时。我不知道为什么。在我使用onlineMode.obj后,它在我的电脑中正常工作。但在发布后,它在其他电脑中不起任何作用。另外,我在管理员模式下运行应用程序并删除条件,但之后就不起作用了..net有一个bug,你能说得更具体些吗?@D Stanley:在调试模式下,一切都正常。条件检查和连接设置更改。但当使用设置变量时,应用程序无法连接到服务器。但当使用onlineMode.obj时,它具有相同的行为,但应用程序可以连接到服务器。在调试模式下,to方法的工作原理相同,但在real objectModel.obj中更改连接字符串。我不确定问题出在哪里,但我怀疑这是一个.NET错误。您试图做的是一个常见的场景,只需配置设置就可以了。我建议问另一个问题来解决这个问题,从config settings.Btw读取。谢谢你的密码@这不重要。因为我们会改变它。