EWS API - Bildirim abonelikleri yeniden oluşturulurken hata


81

Office365 takvim klasörlerine abonelikleri çekme ile çalışırken ErrorReadEventsFailed, SendNotificationistekte çok fazla mesaj alıyorum . Bu hata, esasen aboneliğin artık bulunamayacağı ve sunucunun artık yeni bildirimler beklememesi gerektiği anlamına gelir.

Microsoft'un önerdiği hata işlemeyi kontrol eden çözüm, ExternalEwsUrl veya EwsPartnerUrl'yi yeniden keşfetmek için Autodiscover'ı kullanmak ve yeni bir abonelik oluşturmaktır.

Office365 ile AutoDiscovery hizmeti, OAuth2 hizmet hesaplarının bir kombinasyonu ile neredeyse imkansız görünüyor, bu yüzden https://outlook.office365.com/EWS/Exchange.asmxana EWS uç noktası olarak kullanıyorum .

Ancak, belirli takvim klasörü için yeni bir abonelik oluşturmaya çalıştığımda, genel bir 500 ErrorNoRespondingCASInDestinationSitehata almaya devam ediyorum :

Hedef sitedeki İstemci Erişim Sunucularının hiçbiri isteği işleyemediğinden, Exchange Web Hizmetleri şu anda bu istek için kullanılamıyor.

İşin tuhaf yanı, bunun yalnızca ilk ErrorReadEventsFailedhatayı aldıktan sonra doğrudan gerçekleşmesidir . Örneğin 30 saniye içinde tekrar denersem, istek sorunsuz gerçekleşir.

Biraz araştırma yaptıktan sonra, çoğu kullanıcının, X-AnchorMailboxbaşlığın hizmet hesabının taklit etmek istediği kullanıcı için doğru şekilde ayarlanmasını sağlamayı faydalı bulduğu görüldü. Bu başlığı iki kez kontrol ettim ve gerçekten de yeniden abone olma isteği ile birlikte gönderiliyor.

Bu sorun, üstel bir geri çekilme çözümü ile veya istek yerine getirilene kadar yalnızca X kez yeniden denenerek çözülebilir. Bana öyle geliyor ki, abonelik "kaybolduğunda", O365 hizmetinin Exchange sunucusunun DNS'sini değiştirmek için zamana ihtiyacı var (aklıma gelen tek şey bu).

Herhangi bir yardım çok takdir edilecektir!


Neredeyse bir yaşında, buna bir çözüm buldunuz mu?
Marcus Höglund

1
Resmi bir şey yok, ancak sorunu hafifletmek için bir tür "yeniden deneme" stratejisi uyguladım. Ne yazık ki sorun, X-AnchorMailboxüstbilgi eklendikten ve istekler boyunca Exchange arka uç tanımlama bilgisini kullandıktan sonra bile devam ediyor . Fazla mesaiyi düzeltir gibi görünüyor (30 saniyeden tam güne kadar herhangi bir yerde).
jstruzik

3
Tamam, ayrıca bir yeniden deneme stratejisi uyguladım. En rahatsız edici şey, bazen bu hata meydana geldiğinde yapmam gereken tek şeyin mevcut EWS hizmetine bir aboneliği yeniden oluşturmak olmasıdır. Ancak bu işe yaramadığında, hizmetin yeni bir örneğini oluşturmam ve çalışmasını sağlamak için otomatik keşfetme çağrısı yapmam gerekiyor. Bence değişim sunucusu bir şeyler yapıyor (temizleme, yeniden bağlanma .. sadece tahmin etme.) Ve bu süreç uzun sürerse bununla son
bulursunuz

Yanıtlar:


3

Şu adresteki belgeler verilmiştir: https://msdn.microsoft.com/en-us/library/office/dn458788(v=exchg.150).aspx

Bir abonelik kaybolduğunda veya artık erişilebilir olmadığında, yeni bir abonelik oluşturmak ve eski filigranı yeni aboneliğe dahil etmemek en iyisidir. Eski filigranla yeniden abone olmak, maliyetli olan olaylar için doğrusal bir taramaya neden olur.

Bunun yerine, yeni bir abonelik oluşturun ve kaybolan abonelik ile yeni abonelik arasında meydana gelen içerik değişikliklerini aramak için klasör özelliklerini karşılaştırın. Kontrol etmenizi önerdiğimiz genişletilmiş klasör özellikleri PR_LOCAL_COMMIT_TIME_MAX (0x670a0040)ve PR_DELETED_COUNT_TOTAL (0x670b0003).

Bunu, genişletilmiş bir özellik tanımı oluşturarak yapabilirsiniz. Bunun size yardımcı olabileceğini düşünüyorum !!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.