コード例 #1
0
        /// <summary>
        /// 对于 <paramref name="builder" />添加远程配置方法
        /// </summary>
        /// <param name="builder">
        ///     <see cref="IConfigurationBuilder" />
        /// </param>
        /// <param name="configurationUri">远程地址</param>
        /// <param name="optional">远程配置源是否可选</param>
        /// <param name="events">添加事件</param>
        /// <returns>
        ///     <see cref="IConfigurationBuilder" />
        /// </returns>
        /// <exception cref="ArgumentNullException">builder</exception>
        /// <exception cref="ArgumentNullException">configurationUri</exception>
        /// <exception cref="ArgumentNullException">events</exception>
        public static IConfigurationBuilder AddRemoteSource(this IConfigurationBuilder builder, Uri configurationUri,
                                                            bool optional, RemoteConfigurationEvents events)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (configurationUri == null)
            {
                throw new ArgumentNullException(nameof(configurationUri));
            }

            if (events == null)
            {
                throw new ArgumentNullException(nameof(events));
            }

            var source = new RemoteConfigurationSource
            {
                ConfigurationUri = configurationUri,
                Events           = events,
                Optional         = optional
            };

            return(builder.AddRemoteSource(source));
        }
コード例 #2
0
        /// <summary>
        /// 对于 <paramref name="builder" />添加远程配置方法
        /// </summary>
        /// <param name="builder">
        ///     <see cref="IConfigurationBuilder" />
        /// </param>
        /// <param name="source">
        ///     <see cref="RemoteConfigurationSource" />
        /// </param>
        /// <returns>
        ///     <see cref="IConfigurationBuilder" />
        /// </returns>
        /// <exception cref="ArgumentNullException">builder</exception>
        /// <exception cref="ArgumentNullException">source</exception>
        public static IConfigurationBuilder AddRemoteSource(this IConfigurationBuilder builder,
                                                            RemoteConfigurationSource source)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (source == null)
            {
                throw new ArgumentNullException(nameof(source));
            }

            builder.Add(source);
            return(builder);
        }
コード例 #3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="RemoteConfigurationProvider" /> class.
        /// </summary>
        /// <param name="source">The source.</param>
        public RemoteConfigurationProvider(RemoteConfigurationSource source)
        {
            Check.NotNull(source, "source");
            if (!string.IsNullOrEmpty(source.ConfigurationKeyPrefix))
            {
                Check.CheckCondition(() => source.ConfigurationKeyPrefix.Trim().StartsWith(":"),
                                     CachingResources.InvalidStartCharacter, "source.ConfigurationKeyPrefix", ":");
                Check.CheckCondition(() => source.ConfigurationKeyPrefix.Trim().EndsWith(":"),
                                     CachingResources.InvalidEndCharacter, "source.ConfigurationKeyPrefix", ":");
            }

            Source      = source;
            Backchannel = new HttpClient(source.BackchannelHttpHandler ?? new HttpClientHandler());
            Backchannel.DefaultRequestHeaders.UserAgent.ParseAdd("获取CacheConfiugration信息");
            Backchannel.Timeout = source.BackchannelTimeout;
            Backchannel.MaxResponseContentBufferSize = 1024 * 1024 * 10;
            Parser = source.Parser ?? new JsonConfigurationParser();
        }