Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 提供程序配置的自定义配置文件_C#_Asp.net_Provider - Fatal编程技术网

C# 提供程序配置的自定义配置文件

C# 提供程序配置的自定义配置文件,c#,asp.net,provider,C#,Asp.net,Provider,我正在构建一个自定义提供程序,希望知道如何为我的提供程序指定一个不同的配置文件(例如:MyProvider.Config),以便从中选择配置。默认情况下,它使用Web.Config 我可以在MyProviderConfiguration类中指定自定义配置文件的路径吗 示例: internal class MyProviderConfiguration : ConfigurationSection { [ConfigurationProperty("providers")]

我正在构建一个自定义提供程序,希望知道如何为我的提供程序指定一个不同的配置文件(例如:MyProvider.Config),以便从中选择配置。默认情况下,它使用Web.Config

我可以在MyProviderConfiguration类中指定自定义配置文件的路径吗

示例:

internal class MyProviderConfiguration : ConfigurationSection
{
    [ConfigurationProperty("providers")]        
    public ProviderSettingsCollection Providers
    {
        get
        {
            return (ProviderSettingsCollection)base["providers"];
        }
    }

    [ConfigurationProperty("default", DefaultValue = "TestProvider")]
    public string Default
    {
        get
        {
            return (string)base["default"];
        }
        set
        {
            base["default"] = value;
        }
    }
}

我不太确定你想做什么。如果只想从其他位置加载配置文件,可以执行以下操作:

ExeConfigurationFileMap configFileMap = new ExeConfigurationFileMap();
configFileMap.ExeConfigFilename = "<config file path>";

Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None);

MyProviderConfiguration customConfig = (MyProviderConfiguration)config.GetSection("
ExeConfigurationFileMap configFileMap=newexeconfigurationfilemap();
configFileMap.ExeConfigFilename=“”;
Configuration config=ConfigurationManager.OpenMappedExeConfiguration(configFileMap,ConfigurationUserLevel.None);
MyProviderConfiguration customConfig=(MyProviderConfiguration)config.GetSection(“
(名称)

如果只想将自定义配置放在单独的文件中,可以执行以下操作:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
        <section name="myProviderConfiguration" type="Namespace.MyProviderConfiguration, AssemblyName" />
    </configSections>
    <myProviderConfiguration configSource="configFile.config" />
</configuration>

然后您的configFile.config文件将包含:

<?xml version="1.0" encoding="utf-8"?>
<myProviderConfiguration Default="value">
    <Providers>
        <Provider />
    </Providers>
</myProviderConfiguration>


如果这无助于进一步澄清您的问题。

为了澄清,我不想编辑Web.Config,因为管理员用户可以在网站上编辑提供程序配置。如果我将提供程序配置存储在Web.config中,则当有人编辑提供程序配置时,网站将被重述。我想我可以使用您的…configSource=“configFile.config”。。。解决方案我假设在编辑configFile.config时不会重新启动站点。感谢您对此进行调查。没错,编辑单独的文件不会导致web应用程序重新启动。