J'essaie de configurer les notifications push EWS dans mon application C#.Comment envoyer une réponse OK à EWS
Après avoir reçu la réponse du serveur et l'avoir lue à l'aide d'un NetworkStream, je dois répondre au serveur avec Ok dans un message SOAP. Le seul exemple que je peux trouver utilise Microsoft.Web.Services3 et un SoapEnvelope. Ma compréhension est que cela a maintenant été remplacé par WCF et je veux vraiment utiliser les nouvelles technologies (pour les apprendre).
Comment retourner un message SOAP sur le serveur, probablement en utilisant le même NetworkStream sur lequel je reçois la notification?
Voici un code que j'ai essayé, mais il échoue pour une raison quelconque.
const string RESPONSE_OK = "<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope\"><soap:Body>" +
"<SendNotificationResult xmlns=\"http://schemas.microsoft.com/exchange/services/2006/messages\">" +
"<SubscriptionStatus>OK</SubscriptionStatus></SendNotificationResult></soap:Body></soap:Envelope>";
responseBytes = encoding.GetBytes(RESPONSE_OK);
// Send the result
HTTPResponseStruct _httpResponse;
_httpResponse.version = "HTTP/1.1";
_httpResponse.BodyData = responseBytes;
_httpResponse.Headers = new Hashtable();
_httpResponse.Headers.Add("Server", "IT12");
_httpResponse.Headers.Add("Date", DateTime.Now.ToString("r"));
_httpResponse.Headers.Add("Content-Type", "text/xml; charset=utf-8");
_httpResponse.Headers.Add("Content-Length", _httpResponse.BodyData.Length);
_httpResponse.Headers.Add("Connection", "close");
string HeadersString = _httpResponse.version + " "
+ "200 OK" + "\r\n";
foreach (DictionaryEntry Header in _httpResponse.Headers)
{
HeadersString += Header.Key + ": " + Header.Value + "\r\n";
}
HeadersString += "\r\n";
byte[] bHeadersString = Encoding.ASCII.GetBytes(HeadersString);
// Send headers
clientStream.Write(bHeadersString, 0, bHeadersString.Length);
// Send body
if (_httpResponse.BodyData != null)
clientStream.Write(_httpResponse.BodyData, 0,
_httpResponse.BodyData.Length);
// clientStream.Write(responseBytes, 0, responseBytes.Length);
clientStream.Flush();
Merci, Pieter
Vous avez oublié de mentionner quoi que ce soit à propos de l'échec. Incluez les types d'exception, les messages d'erreur ou décrivez le comportement inattendu. – Timwi
EWS m'avise d'un changement, alors je suis supposé le faire savoir que j'ai reçu la notification. Si ce n'est pas le cas, il va essayer à nouveau dans 30, puis 1 min et continuer à doubler le temps jusqu'à ce qu'il atteigne l'heure spécifiée dans mon abonnement (5 minutes), puis me désabonner automatiquement. Il n'y a pas d'exceptions, juste quelques notifications de plus jusqu'à ce que ça s'arrête. – Pieter
avez-vous réussi à le faire fonctionner? –