Я создал файл ashx, который генерирует файл ics для использования в outlook. Мой код для 1 календаря работал нормально. Теперь я добавил тот факт, что страница Ashx принимает гид, который проверяет в базе данных, какой календарь он должен сгенерировать.
Чтобы люди могли добавлять несколько календарей из одного файла Ashx, добавляя другой гид в конце этого. Проблема сейчас в том, что первый календарь генерирует нормально, а второй выходит из строя. Я вижу, что он достиг моей точки останова в файле Ashx, и он генерирует все нормально, но, похоже, Outlook его не получает. Я предположил, что outlook заблокировал создание файла ics, потому что для него это дважды одинаковая ссылка.
Затем я реализовал перенаправление url на своем веб-сервере, чтобы он выглядел как несколько разных URL для outlook. Опять же, я вижу, что он дважды достигает контрольных точек, но генерируется только 1 календарь, а другой выдает ошибку «не удается проверить или добавить календарь в Outlook ...». И ссылка действительна.
Outlook по-прежнему блокирует refre sh нескольких календарей, потому что он взят из одного и того же файла Ashx?
public class CalendarService : IHttpHandler
{
private readonly OutlookCalendarDomainLogic _domainLogic = InitializeDomainLogic();
private static OutlookCalendarDomainLogic InitializeDomainLogic()
{
var repository = new OutlookCalendarRepository();
OutlookCalendarDomainLogic logic = new OutlookCalendarDomainLogic(repository);
return logic;
}
public void ProcessRequest(HttpContext context)
{
if (!Guid.TryParse(context.Request["Guid"], out Guid guid))
{
return;
}
var co = _domainLogic.GetOutlookCalendarByGuid(guid);
..... Event generation code
//send the calendar item to the browser
HttpContext.Current.Response.ClearHeaders();
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.ContentType = "text/calendar";
HttpContext.Current.Response.AddHeader("content-length", CalendarItem.Length.ToString());
HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=\"" + CalendarName + ".ics\"");
HttpContext.Current.Response.Write(CalendarItem);
HttpContext.Current.Response.Flush();
HttpContext.Current.ApplicationInstance.CompleteRequest();
}
Есть идеи?