저는 Microsoft Exchange Web Services 1.1 SDK를 사용하고 스트리밍 연결을 사용하여 새 메일 알림을 신청합니다. 모든 알림이 정상적으로 수신되지만 Exchange에서 내 구독 정보를 찾을 수 없다는 오류가 발생합니다.내 스트리밍 구독은 어디로 가고 있습니까?
다음은 내가 구독 및 이벤트를 초기화하는 데 사용하는 코드입니다.
public void Subscribe()
{
var locateMailbox = new Mailbox
{
Address = "myemail"
};
var folderId = new FolderId(WellKnownFolderName.Inbox, locateMailbox);
var foldersToWatch = new[] {folderId};
StreamingSubscription streamingSubscription =
_exchangeService.SubscribeToStreamingNotifications(foldersToWatch, EventType.NewMail);
// Timeout is set at 1 minute intentionally
var streamingConnection = new StreamingSubscriptionConnection(_exchangeService, 1);
streamingConnection.AddSubscription(streamingSubscription);
streamingConnection.OnSubscriptionError += ResolveError;
streamingConnection.OnDisconnect += Reconnect;
streamingConnection.Open();
}
public void Reconnect(object sender, SubscriptionErrorEventArgs disconnectEventArgs)
{
if (!((StreamingSubscriptionConnection)sender).IsOpen)
((StreamingSubscriptionConnection)sender).Open();
}
public void ResolveError(object sender, SubscriptionErrorEventArgs errorEventArgs)
{
var streamingSubscriptionConnection =
(StreamingSubscriptionConnection) sender;
if (!streamingSubscriptionConnection.IsOpen)
streamingSubscriptionConnection.Open();
}
ServiceLocalException - You must add at least one subscription to this connection before it can be opened.
Reconnect()
의 안에 다른 구독을 만들 수 있다는 것을 알고 있어요. 누군가가 구독이 어디로 가고 있는지 이해할 수 있기를 바랍니다. 나는 Exchange 2010과 같은 제품이 단순히 가입을 잃어 버릴 것이라고 상상할 수 없습니다. 또한, 나는 그 오류를 지적 할 수 없다. 때로는 10 분 동안 구독을 활성 상태로 유지할 수 있으며 다른 경우 2-3 분 후에 구독이 유효하지 않은 오류가 나타납니다.
나는 가치가있어 Exchange 2010 SP1을 사용하고 있습니다.
내가 제안한대로 했으므로 오류 코드는 'ErrorSubscriptionNotFound'입니다. 왜 나는'sender' 인수를 자세히 조사해 보면 거기에 구독이 있다는 것을 알 수 있기 때문에 확실하지 않습니다. – Mike
오류 코드는 서버에서 온 오류입니다. 드릴 다운하여 구독이 계속 유지되면 클라이언트에 있습니다. 구독을 찾을 수없는 서버입니다. 내 생각 엔 1 분 정도만 타임 아웃을했기 때문에 1 분 정도 지나면 서버가 구독을 취소합니다. 더 긴 시간 초과를 시도하고 문제가 여전히 발생하는지 확인하십시오. 어째서 의도적으로 1 분 타임 아웃을 사용한 이유가 무엇입니까? –
30 분 제한 시간과 동일한 오류가 발생하여 제한 시간을 1 분으로 설정했습니다. 오류를 찾기 위해 30 분 동안 여러 세트를 기다리는 대신 오류를 더 빨리보고 싶었습니다. 하지만 이제는 항상 적극적인 구독을 유지하면서 방어해야한다고 생각합니다. 서버에 딸꾹질이 언제 생길지 결코 알 수 없습니다. 고맙습니다. – Mike