Alb*_*nbo 2 .net c# sharepoint exchange-server exchangewebservices
我们在使用EWS从Exchange删除约会时遇到问题.
我们尝试从这样删除Exchange中的约会
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.Credentials = CurrentUser; // NetworkCredential
service.Url = new Uri(WebserviceAddress);
service.UseDefaultCredentials = false;
var appointment = Appointment.Bind(service, id);
deletedAppointment.Delete(DeleteMode.MoveToDeletedItems, SendCancellationsMode.SendToAllAndSaveCopy);
Run Code Online (Sandbox Code Playgroud)
我们收到一条消息"无法删除对象"的异常.
捕获到Microsoft.Exchange.WebServices.Data.ServiceResponseException消息=无法删除对象.
Source = Microsoft.Exchange.WebServices StackTrace:Microsoft.Exchange.WebServices.Data.ServiceResponse.InternalThrowIfNecessary()at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest1.Execute() at Microsoft.Exchange.WebServices.Data.ExchangeService.InternalDeleteItems(IEnumerable1 itemIds,DeleteMode deleteMode,Nullable1 sendCancellationsMode, Nullable1 affectedTaskOccurrences,ServiceErrorHandling errorHandling)at Microsoft.Exchange1 sendCancellationsMode, NullableMicrosoft.Exchange.WebServices.Data.Appointment上的Microsoft.Exchange.WebServices.Data.Item.InternalDelete(DeleteMode deleteMode,Nullable1 sendCancellationsMode, Nullable1 affectedTaskOccurrences)中的.WebServices.Data.ExchangeService.DeleteItem(ItemId itemId,DeleteMode deleteMode,Nullable 1 affectedTaskOccurrences).在OurNameSpace.ExchangeCalendar.ViewCalendars.ExchangeMethods.DeleteMeeting(ItemId id)中删除(DeleteMode deleteMode,SendCancellationsMode sendCancellationsMode)InnerException:
如果我们改为尝试使用取消会议
deletedAppointment.CancelMeeting();
Run Code Online (Sandbox Code Playgroud)
我们得到一个例外,消息"用户必须是CancelCalendarItem操作的组织者".这让我很困惑,因为当我检查deletedAppointment对象时,我的电子邮件地址被设置为组织者.
我们创建这样的会议
Appointment appointment = new Appointment(service);
appointment.Subject = subject;
appointment.Body = body;
appointment.Start = start;
appointment.End = end;
appointment.Location = location;
appointment.RequiredAttendees.Add(location);
appointment.RequiredAttendees.Add(requiredAttendees);
try
{
appointment.Save(SendInvitationsMode.SendOnlyToAll);
}
catch ...
Run Code Online (Sandbox Code Playgroud)
location包含会议室邮箱的名称.
如果我们暂停一段时间(直到约会出现在Outlook中)并在我们创建会议时使用的同一约会实例上调用删除,则约会将被成功删除.
该代码在自定义SharePoint 2010 WebPart中运行.并不是说我认为它会有所作为,但谁知道呢?
为什么我不能删除约会?
我该如何进一步调查?
据我所知,代码主要是MSN示例的copy'n paste.
编辑
当我将代码的最小示例复制到Winform应用程序时,会议将被正确删除.在Sharepoint上下文中运行时是否会有任何重大差异?
编辑2
CurrentUser是用户提供的用户名和密码.Exchange服务器与SharePoint服务器不在同一个域中.
编辑3
如果我在outlook中打开约会(使用与CurrentUser变量相同的登录名称)我可以取消约会.
最后我们发现问题不在上面的简化示例中.
问题是我们使用"仅查看"帐户来获取日历中的所有约会.然后,当我们尝试使用CurrentUser凭据删除约会时,我们尝试使用该约会ID ,但该ID在新用户的上下文中无效.
当我们更改为检索日历项CurrentUser而不是我们的视图时,所有内容都开始起作用.
无论如何,谢谢你试图提供帮助.
| 归档时间: |
|
| 查看次数: |
5043 次 |
| 最近记录: |