Веб-приложение с 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/