Я пытаюсь создать экземпляр httpclient в другом домене приложения. Но я получаю исключение при попытке создать экземпляр WebRequestHandler.
Вот мой код:
public class CipHandler : IDisposable
{
private readonly HttpClient _client;
private readonly WebRequestHandler _clientHandler;
private readonly X509Store _certStore;
private AppDomain _closedDomain;
....some other properties
private void CreateDomain()
{
AppDomainSetup ads = new AppDomainSetup();
ads.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory;
ads.DisallowBindingRedirects = false;
ads.DisallowCodeDownload = true;
ads.ConfigurationFile = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;
_closedDomain = AppDomain.CreateDomain("Closed Secure Domain", null, ads);
}
public CipHandler()
{
var certificate = GetCert();
CreateDomain();
_clientHandler = (WebRequestHandler)_closedDomain.CreateInstanceAndUnwrap(typeof(WebRequestHandler).Assembly.FullName, typeof(WebRequestHandler).FullName); <<<<<EXCEPTION IS HERE
_clientHandler.AutomaticDecompression = System.Net.DecompressionMethods.Deflate | System.Net.DecompressionMethods.GZip;
_clientHandler.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;
_clientHandler.ClientCertificateOptions = ClientCertificateOption.Manual;
_clientHandler.ClientCertificates.Add(certificate);
_client = (HttpClient)_closedDomain.CreateInstanceAndUnwrap(typeof(HttpClient).Assembly.FullName, typeof(HttpClient).FullName, new object[] { _clientHandler });
_client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("text/xml"));
OpenMarket = (OpenMarket)_closedDomain.CreateInstanceAndUnwrap(typeof(VoRoamInfo).Assembly.FullName, typeof(VoRoamInfo).FullName, new object[] { _client, certificate });
VoFupInfo = (VoFupInfo)_closedDomain.CreateInstanceAndUnwrap(typeof(VoRoamInfo).Assembly.FullName, typeof(VoRoamInfo).FullName, new object[] { _client, certificate });
VoRoamInfo = (VoRoamInfo)_closedDomain.CreateInstanceAndUnwrap(typeof(VoRoamInfo).Assembly.FullName, typeof(VoRoamInfo).FullName,new object[] { _client, certificate });
}
Исключение составляет: Тип 'System. Net .Http.WebRequestHandler' в сборке 'System . Net .Http.WebRequest, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a 'не помечена как сериализуемая.
Может ли кто-нибудь помочь мне разобраться в этой проблеме? Есть ли другой способ достижения httpclient на другом домене приложения?