Веб-приложение с EWS Managed API не создает встречу после развертывания приложения в IIS

Я работаю над веб-приложением, в котором одной из функций является установка событий / встреч из веб-приложения для просмотра календаря пользователя, вошедшего в приложение. Я использую EWS Managed API для покрытия этой функциональности. Это работает нормально на локальном хосте, но когда я развернул приложение на IIS, тогда встречи / события не создаются в календаре Outlook. Я искал относительно этого, и это может происходить из-за некоторых разрешений. Является ли EWS правильным API для достижения вышеуказанной функциональности или я поступаю неправильно?

Пожалуйста, предложите любое решение.

Код EWS

 private static ExchangeService Service
 {
    get
    {
        ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
        //service.Credentials = new WebCredentials("example@abc.com", password);
        service.AutodiscoverUrl("example@abc.com");
        return service;
    }
   }

   private void SaveAppointment()
   {
    IAppointmentFactory iappointment = new AppointmentFactory();
    List<string> lstEmail = new List<string>() {"other@abc.com"};

    CreateAppointments(Service, lstEmail, iappointment);
   }

   private static void CreateAppointments(ExchangeService service, List<string> emailAddresses, IAppointmentFactory factory)
  {
// Loop through the list of email addresses to add the appointment.
foreach (var emailAddress in emailAddresses)
{
    Console.WriteLine(string.Format("  Placing appointment in calendar for {0}.", emailAddress));

    // Set the email address of the account to get the appointment.
    service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, emailAddress);

    // Get the appointment to add.
    Microsoft.Exchange.WebServices.Data.Appointment appointment = factory.GetAppointment(service);

    // Save the appointment.
    try
    {
        Mailbox primary = new Mailbox(emailAddress);
        Microsoft.Exchange.WebServices.Data.Folder primaryCalendar = Microsoft.Exchange.WebServices.Data.Folder.Bind(service, new FolderId(WellKnownFolderName.Calendar, primary));
        appointment.Save(primaryCalendar.Id, SendInvitationsMode.SendToAllAndSaveCopy);
    }
    catch (ServiceResponseException ex)
    {
        Console.WriteLine(string.Format("Could not create appointment for {0}", emailAddress));
        Console.WriteLine(ex.Message);
    }
   }
  }

1 ответ

Ваше приложение и IIS должны быть специально настроены для работы делегирования учетных данных, см. https://blogs.msdn.microsoft.com/emeamsgdev/2012/11/05/ews-from-a-web-application-using-windows-authentication-and-impersonation/

Другие вопросы по тегам