У меня есть служба Windows, которая работает каждые 10 секунд.Обычно это работает нормально, но иногда я получаю эти ошибки;
в Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest 1.Execute()
at OutlookService.ItemLoad(EmailMessage message, List
1 & attachmentList) в \ OutlookService.cs: строка 69;Ошибка запроса.Невозможно прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто удаленным хостом.25.09.2019 15:03:53: Microsoft.Exchange.WebServices: at Microsoft.Exchange.WebServices.Data.SimpleServiceRequestBase.ReadResponse (IEwsHttpWebResponse response)
Моя проблема заключается в том, что в письме произошла ошибка при чтенииэто не может быть прочитано снова.Он остался непрочитанным, но я не могу его получить.
Мой код;
private static ExchangeService Service2013
{
get
{
if (_service2013 == null)
{
var uname = "mail";
var pwd = "pass";
_service2013 = new ExchangeService(ExchangeVersion.Exchange2013_SP1);
_service2013.Credentials = new WebCredentials(uname, pwd);
_service2013.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");
}
return _service2013;
}
}
ExchangeService service = OutlookService.Service;
SearchFilter sf = new SearchFilter.SearchFilterCollection(LogicalOperator.And, new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, false));
try
{
FindItemsResults<Item> findResults;
ItemView view = new ItemView(100);
do
{
findResults = service.FindItems(WellKnownFolderName.Inbox, sf, view);
if (findResults.Items.Count > 0)
{
foreach (var item in findResults.Items)
{
item.Load();
var emailMessage = item as EmailMessage;
if (!string.IsNullOrEmpty(emailMessage.Subject))
{
if (!emailMessage.Subject.ToLower().Contains("automatic reply") && !emailMessage.Subject.ToLower().Contains("otomatik yanıt"))
{
ReadMail(item as EmailMessage);
GC.SuppressFinalize(item);
}
else
{
emailMessage.IsRead = true;
emailMessage.Update(ConflictResolutionMode.AlwaysOverwrite);
}
}
else
{
ReadMail(item as EmailMessage);
GC.SuppressFinalize(item);
}
}
}
view.Offset = findResults.NextPageOffset.GetValueOrDefault(0);
GC.SuppressFinalize(findResults);
} while (findResults.MoreAvailable);
GC.SuppressFinalize(view);
}
catch (Exception ex)
{
//Debug.WriteLine(string.Format("Operate Error {0}.", ex.Message));
Logger.WriteLog(ex);
}