2016-02-24 3 views
0

Я хочу создать программу, которая позволит создать встречу в чужом календаре. например: если кто-то просит 5 дней бесплатно у своего босса, босс должен быть в состоянии его одобрить и немедленно сделать видимым в календаре перспективы человека. Я пытался сделать код с EWS, но я всегда получаю эту ошибку: enter image description here Необработанное исключение типа «Microsoft.Exchange.WebServices.Data.AutodiscoverLocalException» произошло в Microsoft.Exchange.WebServices.dll Дополнительная информация: Автообнаружение блокировало потенциально небезопасные перенаправлениеСоздание встречи с C# с использованием EWS

вот мой код:

using System; 
    using System.Collections.Generic; 
    using System.ComponentModel; 
    using System.Data; 
    using System.Drawing; 
    using System.Linq; 
    using System.Text; 
    using System.Threading.Tasks; 
    using System.Windows.Forms; 
    using Microsoft.Exchange.WebServices.Data; 

namespace exchangetest 
{ 
public partial class Test1 : Form 
{ 

    public Test1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     ExchangeService service = new ExchangeService(); 
     service.UseDefaultCredentials = true; 
     service.Credentials = new WebCredentials("[email protected]", "password"); 
     service.AutodiscoverUrl("[email protected]"); 
     Appointment appointment = new Appointment(service); 

     // Set the properties on the appointment object to create the appointment. 
     appointment.Subject = "Tennis lesson"; 
     appointment.Body = "Focus on backhand this week."; 
     appointment.Start = DateTime.Now.AddDays(2); 
     appointment.End = appointment.Start.AddHours(1); 
     appointment.Location = "Tennis club"; 
     appointment.ReminderDueBy = DateTime.Now; 

     // Save the appointment to your calendar. 
     appointment.Save(SendInvitationsMode.SendToNone); 

     // Verify that the appointment was created by using the appointment's item ID. 
     Item item = Item.Bind(service, appointment.Id, new PropertySet(ItemSchema.Subject)); 
    } 
} 
} 

Я действительно надеюсь, что кто-то может помочь мне с этим.

+0

Copy/Paste ошибки вы получаете, чтобы позволить другим найти свое решение, как только это будет отвечено. Изображения не индексируются. – phaberest

+0

Вы пытались установить URL-адрес службы напрямую, вместо использования AutoDiscover? –

+0

Я попытался добавить URL-адрес вручную, но, возможно, я сделал это неправильно. Если я хочу войти на [link] (https://login.live.com/), должен ли я использовать https://login.live.com/ как домен? в любом случае я получил тот же код ошибки. –

ответ

0

Вы должны использовать AutoDiscoverURL перегружать позволяет указать Валидация обратного вызова Е.Г.

 service.AutodiscoverUrl("[email protected]",adAutoDiscoCallBack); 

     internal static bool adAutoDiscoCallBack(string redirectionUrl) 
    { 
     // The default for the validation callback is to reject the URL. 
     bool result = false; 

     Uri redirectionUri = new Uri(redirectionUrl); 

     // Validate the contents of the redirection URL. In this simple validation 
     // callback, the redirection URL is considered valid if it is using HTTPS 
     // to encrypt the authentication credentials. 
     if (redirectionUri.Scheme == "https") 
     { 
      result = true; 
     } 

     return result; 

    } 

Office365 всегда делает редирект, так что-то вроде этого нужно вы можете поместить в более проверочный код, чтобы сделать его более безопасным чтобы предотвратить человек в середине атак и т.д., проверяя имя сервера и т.д.

Приветствия Глена

+0

Спасибо, это сработало –

Смежные вопросы