Tag: exchangewebservices

EWS API – 重新创build通知订阅时出错

在处理与Office365日历文件夹的订阅时,我在SendNotification请求中收到了很多ErrorReadEventsFailed消息。 这个错误基本上意味着订阅不能再被发现,并且服务器不应该再期望新的通知。 检查微软build议的error handling ,解决scheme是使用自动发现重新发现ExternalEwsUrl或EwsPartnerUrl,并创build一个新的订阅。 使用Office365,AutoDiscovery服务似乎几乎不可能与OAuth2服务帐户的组合,所以我一直使用https://outlook.office365.com/EWS/Exchange.asmx作为主要的EWS端点。 但是,当我尝试创build新的订阅特定的日历文件夹,我不断得到一个通用的500 ErrorNoRespondingCASInDestinationSite错误: Exchange Web服务目前不可用于此请求,因为目标站点中的任何客户端访问服务器都不能处理该请求。 奇怪的部分是这只发生在收到最初的ErrorReadEventsFailed错误后直接发生 。 如果我再次尝试,例如30秒,请求就会顺利通过。 在做了一些研究之后,似乎大多数用户发现有助于确保为服务帐户希望模拟的用户正确设置X-AnchorMailbox头。 我仔细检查了这个头,这确实是在请求重新订阅发送。 这个问题可以通过指数回退解决scheme解决,也可以通过重试X次直到请求通过。 在我看来,当订阅“丢失”,O365服务需要时间来更改Exchange服务器的DNS(这是我能想到的唯一的事情)。 任何帮助将不胜感激!

如何检测这个字典关键字是否存在于C#中?

我正在使用Exchange Web服务托pipeAPI以及联系人数据。 我有以下代码,这是function ,但不是理想的: foreach (Contact c in contactList) { string openItemUrl = "https://" + service.Url.Host + "/owa/" + c.WebClientReadFormQueryString; row = table.NewRow(); row["FileAs"] = c.FileAs; row["GivenName"] = c.GivenName; row["Surname"] = c.Surname; row["CompanyName"] = c.CompanyName; row["Link"] = openItemUrl; //home address try { row["HomeStreet"] = c.PhysicalAddresses[PhysicalAddressKey.Home].Street.ToString(); } catch (Exception e) { } try { row["HomeCity"] = […]

EWS – 访问所有共享日历

我有以下代码: private void ListCalendarFolders(ref List<EBCalendar> items, int offset) { var pageSize = 100; var view = new FolderView(pageSize, offset, OffsetBasePoint.Beginning); view.PropertySet = new PropertySet(BasePropertySet.FirstClassProperties); view.PropertySet.Add(FolderSchema.DisplayName); view.PropertySet.Add(FolderSchema.EffectiveRights); view.Traversal = FolderTraversal.Deep; FindFoldersResults findFolderResults = service.FindFolders(WellKnownFolderName.MsgFolderRoot, view); foreach (Folder myFolder in findFolderResults.Folders) { if (myFolder is CalendarFolder) { var folder = myFolder as CalendarFolder; items.Add(EBCalendar.FromEWSFolder(folder)); } } if […]