2015-07-20 31 views
80

Khi làm việc với đăng ký kéo vào thư mục lịch Office365, tôi nhận được rất nhiều thông báo ErrorReadEventsFailed trong yêu cầu SendNotification. Lỗi này về cơ bản có nghĩa là không thể tìm thấy đăng ký nữa và máy chủ sẽ không còn mong đợi thông báo mới nữa.EWS API - Lỗi khi tạo lại đăng ký thông báo

Kiểm tra Microsoft's recommended error handling, giải pháp là sử dụng Tự động phát hiện để khám phá lại ExternalEwsUrl hoặc EwsPartnerUrl và tạo đăng ký mới.

Với Office365, dịch vụ Tự động khám phá có vẻ gần như không thể với kết hợp tài khoản dịch vụ OAuth2 nên tôi đã sử dụng https://outlook.office365.com/EWS/Exchange.asmx làm điểm cuối EWS chính.

Tuy nhiên, khi tôi cố gắng tạo một thuê bao mới cho thư mục lịch cụ thể, tôi tiếp tục nhận được một generic 500 ErrorNoRespondingCASInDestinationSite lỗi:

Exchange Web Services are not currently available for this request because none of the Client Access Servers in the destination site could process the request.

Phần lạ là này chỉ xảy ra ngay sau khi nhận được ErrorReadEventsFailed lỗi ban đầu. Nếu tôi thử lại sau 30 giây, yêu cầu sẽ không có vấn đề gì.

Sau khi thực hiện một số nghiên cứu, dường như hầu hết người dùng thấy hữu ích để đảm bảo rằng tiêu đề X-AnchorMailbox được đặt đúng cho người dùng mà tài khoản dịch vụ muốn mạo danh. Tôi đã kiểm tra kỹ tiêu đề này và nó thực sự được gửi cùng với yêu cầu đăng ký lại.

Sự cố này có thể được giải quyết bằng giải pháp trả lại theo hàm mũ hoặc bằng cách thử lại số lần X cho đến khi yêu cầu đi qua. Dường như với tôi rằng khi thuê bao bị "mất", dịch vụ O365 cần thời gian để thay đổi DNS của máy chủ Exchange (đó là điều duy nhất tôi có thể nghĩ đến).

Bất kỳ trợ giúp nào sẽ được đánh giá rất nhiều!

+0

Gần một tuổi, Bạn đã tìm thấy giải pháp cho điều này chưa? –

+1

Không có gì chính thức, nhưng tôi đã thực hiện chiến lược "thử lại" để tìm cách giảm thiểu vấn đề. Rất tiếc, sự cố vẫn xảy ra ngay cả sau khi thêm tiêu đề 'X-AnchorMailbox' và sử dụng cookie phụ trợ Exchange trong suốt các yêu cầu. Dường như tự sửa chữa thêm giờ (bất cứ nơi nào trong khoảng 30 giây đến một ngày). – jstruzik

+3

Ok, tôi cũng đã triển khai chiến lược thử lại. Điều đáng lo ngại nhất là đôi khi khi lỗi này xảy ra, điều duy nhất tôi cần làm là tạo lại đăng ký dịch vụ EWS hiện tại. Nhưng khi đó không làm việc tôi cần phải tạo ra một instans mới của dịch vụ và gọi autodiscover trên đó để làm cho nó hoạt động. Tôi nghĩ rằng các máy chủ trao đổi đang làm một cái gì đó (làm sạch, kết nối lại ..just đoán.) Và nếu quá trình đó sẽ kéo dài bạn kết thúc với điều này .. –

Trả lời

1

Với tài liệu tại địa chỉ: https://msdn.microsoft.com/en-us/library/office/dn458788(v=exchg.150).aspx

Khi một thuê bao bị mất, hoặc không còn sử dụng được, cách tốt nhất là để tạo ra một đăng ký mới và không bao gồm các watermark cũ trong đăng ký mới. Việc đăng ký lại với hình mờ cũ gây ra một lần quét tuyến tính cho các sự kiện, điều này rất tốn kém.

Thay vào đó, hãy tạo đăng ký mới và so sánh các thuộc tính thư mục để tìm các thay đổi nội dung xảy ra giữa đăng ký bị mất và đăng ký mới. Các thuộc tính thư mục mở rộng mà chúng tôi khuyên bạn nên kiểm tra là PR_LOCAL_COMMIT_TIME_MAX (0x670a0040)PR_DELETED_COUNT_TOTAL (0x670b0003).

Bạn có thể thực hiện việc này bằng cách tạo định nghĩa thuộc tính mở rộng. Tôi nghĩ điều này có thể giúp bạn !!

Các vấn đề liên quan