本文整理汇总了C#中IConfigService.GetSection方法的典型用法代码示例。如果您正苦于以下问题:C# IConfigService.GetSection方法的具体用法?C# IConfigService.GetSection怎么用?C# IConfigService.GetSection使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IConfigService
的用法示例。
在下文中一共展示了IConfigService.GetSection方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: RegisterServices
/// <summary>
/// 向指定的容器中注册服务
/// </summary>
/// <param name="container"></param>
public static DefaultConfigService RegisterServices(Container container)
{
InternalLogService.Start.Info("初始化配置服务", LogCategory.Start);
#region 配置服务初始化,配置服务启用之前,不能使用 Logger
// 注册配置服务
container.Register(typeof(XMS.Core.Configuration.IConfigService), typeof(XMS.Core.Configuration.DefaultConfigService), "ConfigService", LifestyleType.Singleton);
// 到此时配置服务应该已可用,如果不可用抛出异常,初始化失败
try
{
configService = container.Resolve<IConfigService>();
}
catch (Exception err)
{
throw new ConfigurationErrorsException("找不到可用的配置服务,这通常是由于主配置文件中缺少相关配置或存在错误造成的,请检查并修改配置文件。", err);
}
// 注册集中配置服务所需要的远程配置服务
Type serviceType = typeof(XMS.Core.Configuration.ServiceModel.IRemoteConfigService);
baseServiceTypes = new List<Pair<string, Type>>();
baseServiceTypes.Add(new Pair<string, Type>() { First = "ConfigService", Second = serviceType });
// 暂时使用 PerCall 模式,将来如果通过双工服务实现服务器端配置文件变化即时通知客户端,则应使用 PerEndPoint 长连接模式。
RegisterService(container, serviceType, ClientChannelCacheMode.PerCall);
// 从应用程序配置文件中绑定配置服务
if (IsNotWebApplication())
{
BindServiceConfiguration(System.Configuration.ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None), new List<Pair<string, Type>>(baseServiceTypes), GetRetryingTimeInterval());
}
else
{
BindServiceConfiguration(System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(System.Web.Hosting.HostingEnvironment.ApplicationVirtualPath, System.Web.Hosting.HostingEnvironment.SiteName), new List<Pair<string, Type>>(baseServiceTypes), GetRetryingTimeInterval());
}
// 如果启用集中配置,则通过配置服务从配置服务器下载配置文件
if (configService.EnableConcentratedConfig)
{
InternalLogService.Start.Info("为配置服务启用集中配置。", LogCategory.Start);
if (configService is DefaultConfigService)
{
((DefaultConfigService)configService).InitRemoteConfigService(container);
}
}
#endregion
InternalLogService.Start.Info("注册服务引用。", LogCategory.Start);
// 通过配置服务获取要注册的服务
ServiceReferencesSection services = (ServiceReferencesSection)configService.GetSection("wcfServices");
if (services != null) // 如果配置文件中不包含 wcfServices 配置节,则不需要进行注册,这适用于不使用其他服务的场合
{
int retryingTimeInterval = GetRetryingTimeInterval();
// 注册服务类型(服务类型只在应用程序启动时注册1次)
listServiceTypes = new List<Pair<string, Type>>();
for (int i = 0; i < services.ServiceReferences.Count; i++)
{
try
{
serviceType = Type.GetType(services.ServiceReferences[i].ServiceType, true, true);
listServiceTypes.Add(new Pair<string, Type>() { First = services.ServiceReferences[i].ServiceName, Second = serviceType });
RegisterService(container, serviceType, (ClientChannelCacheMode)Enum.Parse(typeof(ClientChannelCacheMode), services.ServiceReferences[i].CacheModel));
InternalLogService.Start.Info(String.Format("注册类型为 {0} 的 WCF 服务。", serviceType.FullName), LogCategory.Start);
}
catch (Exception registerException)
{
throw new Exception(String.Format("注册服务{{serviceName={0}, serviceType={1}}}失败,详细错误信息为:{2}", services.ServiceReferences[i].ServiceName, services.ServiceReferences[i].ServiceType, registerException.GetBaseException().Message), registerException);
}
}
InternalLogService.Start.Info("绑定服务配置", LogCategory.Start);
// 绑定服务配置
BindServiceConfiguration(configService, listServiceTypes, retryingTimeInterval);
}
// 监听配置文件变化事件
configService.ConfigFileChanged += new ConfigFileChangedEventHandler(configService_ConfigFileChanged);
return configService as DefaultConfigService;
}