更改 nopCommerce 的连接字符串?

Eve*_*rra 4 connection-string nopcommerce

我正在使用 nopCommerce,我需要删除 settings.txt 文件中的连接字符串并插入 web.config 文件。我怎样才能做到这一点?

Ste*_*ham 5

将连接字符串从 settings.txt 移到 web.config 的最直接方法是修改Nop.Core.Data.DataSettingsManager. 具体方法LoadSettings()SaveSettings()方法。您可以将连接字符串存储在您想要的任何位置(最好在 web.config 中),只要这两种方法读取和写入配置即可。

DataSettingsManager可以在此 Gist 中找到支持在 web.config 中存储连接字符串的更新的粗略示例:http : //git.io/vUPcI只需将连接字符串从 settings.txt 复制到 web.config 并命名连接“ DefaultConnection”或相应地调整代码。


小智 5

只需做两步

  1. 替代两个方法LoadSettings,并SaveSettings\nopCommerce\Libraries\Nop.Core\Data\DataSettingsManager.cs。来自@Stephen Kiningham 链接的代码

    /// <summary>
    /// Load settings
    /// </summary>
    /// <param name="filePath">File path; pass null to use default settings file path</param>
    /// <returns></returns>
    public virtual DataSettings LoadSettings(string filePath = null)
    {            
        try
        {
            System.Configuration.Configuration webConfig = WebConfigurationManager.OpenWebConfiguration(HttpRuntime.AppDomainAppVirtualPath);
            return new DataSettings
            {
                DataConnectionString = webConfig.ConnectionStrings.ConnectionStrings["DefaultConnection"].ConnectionString,
                DataProvider = webConfig.ConnectionStrings.ConnectionStrings["DefaultConnection"].ProviderName
            };
        }
        catch (NullReferenceException)
        {
            return new DataSettings();
        }
    }
    
    /// <summary>
    /// Save settings to a file
    /// </summary>
    /// <param name="settings"></param>
    public virtual void SaveSettings(DataSettings settings)
    {            
        if (null == settings) throw new ArgumentNullException("settings");
    
        System.Configuration.Configuration webConfig = WebConfigurationManager.OpenWebConfiguration(HttpRuntime.AppDomainAppVirtualPath);
    
        webConfig.ConnectionStrings.ConnectionStrings["DefaultConnection"].ConnectionString = settings.DataConnectionString;
        webConfig.ConnectionStrings.ConnectionStrings["DefaultConnection"].ProviderName = settings.DataProvider;
    
        webConfig.Save();
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将连接字符串添加到您的网络配置 web.config

    /// <summary>
    /// Load settings
    /// </summary>
    /// <param name="filePath">File path; pass null to use default settings file path</param>
    /// <returns></returns>
    public virtual DataSettings LoadSettings(string filePath = null)
    {            
        try
        {
            System.Configuration.Configuration webConfig = WebConfigurationManager.OpenWebConfiguration(HttpRuntime.AppDomainAppVirtualPath);
            return new DataSettings
            {
                DataConnectionString = webConfig.ConnectionStrings.ConnectionStrings["DefaultConnection"].ConnectionString,
                DataProvider = webConfig.ConnectionStrings.ConnectionStrings["DefaultConnection"].ProviderName
            };
        }
        catch (NullReferenceException)
        {
            return new DataSettings();
        }
    }
    
    /// <summary>
    /// Save settings to a file
    /// </summary>
    /// <param name="settings"></param>
    public virtual void SaveSettings(DataSettings settings)
    {            
        if (null == settings) throw new ArgumentNullException("settings");
    
        System.Configuration.Configuration webConfig = WebConfigurationManager.OpenWebConfiguration(HttpRuntime.AppDomainAppVirtualPath);
    
        webConfig.ConnectionStrings.ConnectionStrings["DefaultConnection"].ConnectionString = settings.DataConnectionString;
        webConfig.ConnectionStrings.ConnectionStrings["DefaultConnection"].ProviderName = settings.DataProvider;
    
        webConfig.Save();
    }
    
    Run Code Online (Sandbox Code Playgroud)


小智 1

请将其添加到 Nop.Web 项目下的 web.config 中:

<connectionStrings>
<add name="MyConnectionString" 
connectionString="Data Source=serverName;Initial Catalog=DBName;Persist Security Info=False;UserID=userName;Password=password" 
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)

此致。