/// <summary>
        /// 获取终结点地址
        /// </summary>
        /// <returns>终结点地址</returns>
        private EndpointAddress GetEndpointAddress <T>()
        {
            string configName = typeof(T).FullName;

            if (!ConfigMediator.EndpointElements.ContainsKey(configName))
            {
                throw new NullReferenceException($"名称为\"{configName}\"的终结点未配置!");
            }

            EndpointElement endpointElement = ConfigMediator.EndpointElements[configName];
            Uri             uri             = new Uri(endpointElement.Address);

            AddressHeader[] addressHeaders = null;

            if (endpointElement.HeaderProviderElement != null &&
                !string.IsNullOrWhiteSpace(endpointElement.HeaderProviderElement.Type) &&
                !string.IsNullOrWhiteSpace(endpointElement.HeaderProviderElement.Assembly))
            {
                Assembly assembly = Assembly.Load(endpointElement.HeaderProviderElement.Assembly);
                Type     type     = assembly.GetType(endpointElement.HeaderProviderElement.Type);

                if (!typeof(IHeaderProvider).IsAssignableFrom(type))
                {
                    throw new InvalidOperationException($"类型\"{type.FullName}\"未实现接口\"IHeaderProvider\"!");
                }

                IHeaderProvider headerProvider = (IHeaderProvider)Activator.CreateInstance(type);
                addressHeaders = headerProvider.GetHeaders();
            }

            EndpointAddress address = new EndpointAddress(uri, addressHeaders ?? new AddressHeader[0]);

            return(address);
        }
Esempio n. 2
0
 private void AddHeaders(HttpClient httpClient)
 {
     foreach (KeyValuePair <string, string> header in provider.GetHeaders())
     {
         httpClient.DefaultRequestHeaders.TryAddWithoutValidation(header.Key, header.Value);
     }
 }