Я пишу программу для сброса содержимого многочисленных почтовых ящиков с сервера Exchange с использованием EWS на C#. Используя скрипач, я заметил, что каждый отправленный запрос делает новое соединение (туннель) с новым процессом аутентификации (с использованием согласования). Мой ServerCertificateValidationCallback вызывается для каждого запроса.Повторное использование соединения EWS и согласование подлинности для Exchange
Если я включил опцию в Fiddler, чтобы «повторно использовать соединения с сервером», чем соединение создается только во время установления связи и повторно используется для всех запросов (экономя много времени).
Получая источник EWS и изменение запросов, которые я нашел, если включить «UnsafeAuthenticatedConnectionSharing» на объектах запроса, чем соединение повторно используется (дополнительные туннели & ServerCertificateValidationCallbacks исчезают), но каждый запрос по-прежнему требует полной аутентификации квитирования. Это связано с тем, что сервер отправляет обратно 401, когда я пытаюсь использовать cookie-обмен.
Возможно ли повторное использование моего подключения к серверу &?
public class EwsExchange
{
static int Main(string[] args)
{
sslCertCheckCount = 0;
ServicePointManager.ServerCertificateValidationCallback = ServerCertificateValidation;
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
service.Credentials = new NetworkCredential(args[1], args[2]);
service.Url = new Uri(args[0] + @"/EWS/exchange.asmx");
service.KeepAlive = true;
service.PreAuthenticate = true;
//service.UnsafeAuthenticatedConnectionSharing = true;
Folder folder = Folder.Bind(service, WellKnownFolderName.Inbox, new PropertySet(FolderSchema.Id, FolderSchema.DisplayName));
FindItemsResults<Item> res = folder.FindItems(new ItemView(int.MaxValue));
return 0;
}
public static bool ServerCertificateValidation(Object obj, X509Certificate certificate, X509Chain chain, System.Net.Security.SslPolicyErrors errors)
{
Console.WriteLine(String.Format(" ****************** ServerCertificateValidation - count: {0}. ****************** ", ++sslCertCheckCount));
return true;
}
static int sslCertCheckCount;
}
Спасибо!
Привет и добро пожаловать! Вы должны взять [тур] (http://stackoverflow.com/tour), если вы еще этого не сделали, и я бы рекомендовал прочитать, как предоставить [ясный и минимальный] (http://stackoverflow.com/ help/mcve). Ваш код довольно длинный, и havign минимальный пример поможет! – Docteur