C# 连接到exchangeServices以获取我的日历并获取错误

C# 连接到exchangeServices以获取我的日历并获取错误,c#,asp.net-mvc-4,exchangewebservices,C#,Asp.net Mvc 4,Exchangewebservices,我尝试使用exchange服务器上的outlook帐户通过asp.net连接到C#exchange ews,并且在尝试获取日历时,我不断收到“当以没有邮箱的帐户发出请求时,您必须为任何可分辨文件夹ID指定邮箱主SMTP地址。” 连接到ews: private ExchangeService ConnectToService(ExchangeRetrivalParams exchangeRetrivalParams) { ExchangeService service = new Exch

我尝试使用exchange服务器上的outlook帐户通过asp.net连接到C#exchange ews,并且在尝试获取日历时,我不断收到“当以没有邮箱的帐户发出请求时,您必须为任何可分辨文件夹ID指定邮箱主SMTP地址。”

连接到ews:

private ExchangeService ConnectToService(ExchangeRetrivalParams exchangeRetrivalParams)
{
    ExchangeService service = new ExchangeService(exchangeRetrivalParams.ExchangeVer);
    service.Credentials = new WebCredentials(exchangeRetrivalParams.Username, exchangeRetrivalParams.Password);
    service.UseDefaultCredentials = true;
    service.AutodiscoverUrl(exchangeRetrivalParams.Email, RedirectionUrlValidationCallback);
    return service;
}
正在尝试获取日历:

try {
    ExchangeService service = ConnectToService(email, username, password);

    int NUM_APPTS = NumberOfItems;

    // Initialize the calendar folder object with only the folder ID.
    CalendarFolder calendar = CalendarFolder.Bind(service, WellKnownFolderName.Calendar, new PropertySet());
    //get the start and end times
    DateTime startDate = new DateTime(2017, 7, 21);
    DateTime endDate = new DateTime(2017, 7, 23);

    // Set the start and end time and number of appointments to retrieve.
    CalendarView cView = new CalendarView(startDate, endDate, NUM_APPTS);
    // Limit the properties returned to the appointment's subject, start time, and end time.
    cView.PropertySet = new PropertySet(AppointmentSchema.Start,
                                        AppointmentSchema.End,
                                        AppointmentSchema.IsRecurring,
                                        AppointmentSchema.AppointmentType);
}
catch (Exception e) {
    lastOperationErrorMsg = e.Message;
    return null;
}
它失败于:

当以没有邮箱的帐户进行请求时,必须为任何可分辨文件夹ID指定邮箱主SMTP地址

关于:
CalendarFolder calendar=CalendarFolder.Bind(服务,WellKnownFolderName.calendar,新属性集())


任何帮助都将不胜感激。

您可以同时使用webcredentials和UseDefaultCredentials,例如

 service.Credentials = new WebCredentials(exchangeRetrivalParams.Username, exchangeRetrivalParams.Password);
service.UseDefaultCredentials = true;

您应该使用一个或另一个,如果您试图模拟当前登录的用户,那么您必须处理Kerbros委派,例如,我建议您遵循

中的示例确定,因此我发现它与:

ExchangeService service = new ExchangeService("ExchangeVersion");
service.Credentials = new WebCredentials("Username", "Password", "Domain");
service.AutodiscoverUrl("Email", RedirectionUrlValidationCallback);
现在它连接并检索所有请求的约会(根据开始和结束日期)


希望这是一种良好的做法,如果我删除其中一项,它可以接受新的建议

:service.Credentials=newWebCredentials(ExchangeTrivalParams.Username,ExchangeTrivalParams.Password);service.UseDefaultCredentials=true;然后我得到一个错误:“找不到自动发现服务。”