/// <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); }
private void AddHeaders(HttpClient httpClient) { foreach (KeyValuePair <string, string> header in provider.GetHeaders()) { httpClient.DefaultRequestHeaders.TryAddWithoutValidation(header.Key, header.Value); } }