API EWS - Lỗi khi tạo lại đăng ký thông báo


81

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

Kiểm tra cách xử lý lỗi được đề xuất của Microsoft , 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á dường như gần như không thể với sự kết hợp của các tài khoản dịch vụ OAuth2, vì vậy tôi đã sử dụng https://outlook.office365.com/EWS/Exchange.asmxlàm điểm cuối EWS chính.

Tuy nhiên, khi tôi cố gắng tạo đăng ký mới cho thư mục lịch cụ thể, tôi tiếp tục gặp 500 ErrorNoRespondingCASInDestinationSitelỗi chung :

Exchange Web Services hiện không có sẵn cho yêu cầu này vì không có Máy chủ Truy cập Máy khách nào trong trang đích có thể xử lý yêu cầu.

Điều kỳ lạ là điều này chỉ xảy ra trực tiếp sau khi nhận được ErrorReadEventsFailedlỗi ban đầu . Nếu tôi thử lại sau 30 giây, yêu cầu được thực hiện mà không có sự cố.

Sau khi thực hiện một số nghiên cứu, có vẻ như hầu hết người dùng đều thấy hữu ích khi đảm bảo rằng X-AnchorMailboxtiêu đề đượ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ự đang được gửi cùng với yêu cầu đăng ký lại.

Vấn đề này có thể được giải quyết bằng giải pháp dự phòng theo cấp số nhân hoặc chỉ cần thử lại X số lần cho đến khi yêu cầu được hoàn thành. Đối với tôi, dường như khi đăng ký 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).

Mọi sự trợ giúp sẽ rất được trân trọng!


Gần một năm tuổi, Bạn đã tìm ra giải pháp cho việc này chưa?
Marcus Höglund

1
Không có gì chính thức, nhưng tôi đã thực hiện một chiến lược "thử lại" để cố gắng giảm thiểu vấn đề. Thật không may, sự cố vẫn xảy ra ngay cả sau khi thêm X-AnchorMailboxtiêu đề và sử dụng cookie phụ trợ Exchange trong các yêu cầu. Có vẻ như tự sửa chữa ngoài giờ (bất cứ nơi nào từ 30 giây đến cả ngày).
jstruzik

3
Được rồi, 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 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 điều đó không hiệu quả, tôi cần tạo một phiên bản mới của dịch vụ và gọi tự động phát hiện trên đó để làm cho nó hoạt động. Tôi nghĩ rằng máy chủ trao đổi đang làm gì đó (dọn dẹp, kết nối lại .. chỉ cần đoán.) Và nếu quá trình đó mất nhiều thời gian, bạn sẽ kết thúc với điều này ..
Marcus Höglund

Câu trả lời:


3

Cung cấp tài liệu tại: https://msdn.microsoft.com/en-us/library/office/dn458788(v=exchg.150).aspx

Khi đăng ký bị mất hoặc không thể truy cập được nữa, cách tốt nhất là tạo một đăng ký mới và không bao gồm hình mờ cũ trong đăng ký mới. Việc đăng ký lại với hình mờ cũ gây ra quá trình quét tuyến tính cho các sự kiện, gây tốn kém.

Thay vào đó, hãy tạo một đăng ký mới và so sánh các thuộc tính thư mục để tìm kiếm những 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ể làm điều này bằng cách tạo một định nghĩa thuộc tính mở rộng. Tôi nghĩ rằng điều này có thể giúp bạn !!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.