Entity framework 在何处放置Web API的配置设置

Entity framework 在何处放置Web API的配置设置,entity-framework,c#-4.0,asp.net-web-api,connection-string,app-config,Entity Framework,C# 4.0,Asp.net Web Api,Connection String,App Config,我正在使用WebAPI和实体框架。最初,我的连接字符串位于web.config文件中。Web API托管在IIS服务器中。连接字符串将由实用程序加密(未知的可执行文件可能是第三方),因此当连接字符串在web.config中加密时,API将再次重新启动,我们不希望重新启动API 我是否可以将所有设置保留在app.config而不是web.config中,以避免重新启动web API,或者注册表是将连接字符串保留在配置文件上的好选择 我使用了下面的代码从app.config读取连接字符串 strin

我正在使用WebAPI和实体框架。最初,我的连接字符串位于web.config文件中。Web API托管在IIS服务器中。连接字符串将由实用程序加密(未知的可执行文件可能是第三方),因此当连接字符串在web.config中加密时,API将再次重新启动,我们不希望重新启动API

我是否可以将所有设置保留在app.config而不是web.config中,以避免重新启动web API,或者注册表是将连接字符串保留在配置文件上的好选择

我使用了下面的代码从app.config读取连接字符串

string codeBase = System.Reflection.Assembly.GetExecutingAssembly().CodeBase;
        UriBuilder uri = new UriBuilder(codeBase);
        string path = Uri.UnescapeDataString(uri.Path);
        string configPath = Path.Combine(Path.GetDirectoryName(path), "database.config");

        if (File.Exists(configPath))
        {
            var configMap = new ExeConfigurationFileMap
            {
                ExeConfigFilename = configPath
            };

            Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
            string connectionString = config.ConnectionStrings.ConnectionStrings["DatabaseContext"].ToString();

        }

请建议。

您可以在app.config文件中使用连接字符串,但必须将其视为一个文件,System.configuration不会在web应用程序中选择它。至于重启,IIS应用程序池默认每29小时重启一次,直到您更改该值为止。正如@Prashant上面提到的,您不能将其存储在app.config中。我能想到的另一种方法是将加密的连接字符串存储在平面文件或数据库中,并在服务器端读取和解密它们。@Prashant,我在上面共享了从app.config读取连接字符串的代码。如果我在运行时更改连接字符串(加密连接字符串),那么它会重新启动web API的应用程序池吗?请确认或者我应该将其移动到数据库您可以在app.config文件中拥有连接字符串,但您必须将其视为一个文件,System.configuration不会在web应用程序中拾取它。至于重启,IIS应用程序池默认每29小时重启一次,直到您更改该值为止。正如@Prashant上面提到的,您不能将其存储在app.config中。我能想到的另一种方法是将加密的连接字符串存储在平面文件或数据库中,并在服务器端读取和解密它们。@Prashant,我在上面共享了从app.config读取连接字符串的代码。如果我在运行时更改连接字符串(加密连接字符串),那么它会重新启动web API的应用程序池吗?请确认,还是将其移动到数据库