gpt4 book ai didi

c# - configSource 绝对路径解决方法

转载 作者:行者123 更新时间:2023-11-30 16:30:23 25 4
gpt4 key购买 nike

我有一个 WCF 数据服务,其中包含我在 page_load 事件期间异步调用的一些方法。

我需要一个解决方案,以便在必要时从脚本或控制台应用程序调用这些方法。

我创建了一个引用 WCF .dll 库的控制台应用程序。我必须将 WCF 服务下的 web.config 中的一些配置变量复制到控制台应用程序下的 app.config 中。

我希望 app.config 自动镜像 web.config 或以某种方式将控制台应用程序指向 WCF 服务 web.config。

我的控制台应用程序和 wcf 项目在同一个解决方案中彼此相邻,因此“configSource”属性不起作用。不允许父目录或绝对路径。

有人知道解决这个问题的方法吗?

最佳答案

好的,我不知道您的自定义配置部分是什么,但是本类(class)将向您展示如何以编程方式检索配置部分(本例中为 system.serviceModel/client)、应用程序设置和连接字符串。您应该能够修改它以满足您的需要。

public class ConfigManager
{
private static readonly ClientSection _clientSection = null;
private static readonly AppSettingsSection _appSettingSection = null;
private static readonly ConnectionStringsSection _connectionStringSection = null;
private const string CONFIG_PATH = @"..\..\..\The rest of your path\web.config";

static ConfigManager()
{
ExeConfigurationFileMap configFileMap = new ExeConfigurationFileMap()
{
ExeConfigFilename = CONFIG_PATH
};

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

_clientSection = config.GetSection("system.serviceModel/client") as ClientSection;
_appSettingSection = config.AppSettings;
_connectionStringSection = config.ConnectionStrings;
}

public string GetClientEndpointConfigurationName(Type t)
{
string contractName = t.FullName;
string name = null;

foreach (ChannelEndpointElement c in _clientSection.Endpoints)
{
if (string.Compare(c.Contract, contractName, true) == 0)
{
name = c.Name;
break;
}
}

return name;
}

public string GetAppSetting(string key)
{
return _appSettingSection.Settings[key].Value;
}

public string GetConnectionString(string name)
{
return _connectionStringSection.ConnectionStrings[name].ConnectionString;
}
}

用法:

ConfigManager mgr = new ConfigManager();

string setting = mgr.GetAppSetting("AppSettingKey");
string connectionString = mgr.GetConnectionString("ConnectionStringName");
string endpointConfigName = mgr.GetClientEndpointConfigurationName(typeof(IServiceContract));

关于c# - configSource 绝对路径解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5748133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com