C# 连接到exchangeServices以获取我的日历并获取错误
我尝试使用exchange服务器上的outlook帐户通过asp.net连接到C#exchange ews,并且在尝试获取日历时,我不断收到“当以没有邮箱的帐户发出请求时,您必须为任何可分辨文件夹ID指定邮箱主SMTP地址。” 连接到ews: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
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;然后我得到一个错误:“找不到自动发现服务。”