8
votes

Lire le courrier électronique à l'aide des services Web Exchange

Ceci est mon scénario: je dois lire les courriels des comptes SP2 Exchange 2010. Je dois utiliser Exchange Web Services, POP3 et IMAP sont bloqués. Je dois tester mon application dans un environnement où les personnes peuvent accéder à leurs comptes via un navigateur Web uniquement dans l'intranet. Je ne peux pas déboguer mon application directement à cet intranet. J'ai cet extrait pour accéder à un compte: xxx

si j'utilise cette ligne: xxx

i obtenir cette erreur:

"AutoDiscover a bloqué une redirection potentiellement insécurité à https://autodiscover.colpatria.com/autodiscover/autodiscover.xmlle A>. Pour permettre à AutoDiscover de suivre la redirection, utilisez l'autodiscoverurl (String, AutoDiscoverredirectionRectionLLValidationCallback). "

donc la méthode redirectionURLVALIDATIONCallback a été implémentée, je ne sais pas si l'URL a raison. Le fait est que je reçois cette erreur:

"Le service AutoDiscover n'a pas pu être localisé".

est possible que l'autodécover n'est pas configuré correctement ?? Je ne suis pas l'administrateur Exchange, comment puis-je savoir si AutoDiscover fonctionne ?? J'ai besoin d'arguments pour dire aux administrateurs Exchange Cette fonctionnalité doit être configurée. Merci pour toute aide.


2 commentaires

Je suis sûr que vous avez trouvé un chemin à propos de cette question d'un an, je veux simplement ajouter que l'utilisation de Calling autodiscoverurl n'est pas le seul moyen de se connecter avec des CRS. La définition plutôt que l'URL directement vous-même pourrait être une alternative viable. Exemple: service.url = nouveau URI ("https: //your_exchange_server/ews/exchange.asmx");


Hardcoding le service.url n'est pas la bonne façon !! Nous utilisons AutoDiscover à des fins. Cela nous permet de ne pas vous inquiéter si l'utilisateur est sur place ou Office365. L'URL EWS EndPoint sera définie comme service.url automatiquement.


6 Réponses :


2
votes

En quelque sorte, vous devez vous connecter le résultat de ce que redirectionURL est. Vous obtiendrez cette erreur lorsque votre redirectionURL ne correspond pas à l'URI que vous avez spécifié ( i.e. Votre appel de validation AutoDiscover renvoie false ). Certes, le redirectionURL URI n'est pas ce que vous pensez que c'est. Si vous utilisez SSL - vous devez gérer le rappel de la validation de redirection.

Comme vous ne pouvez pas déboguer de l'application, vous pouvez peut-être envoyer un courrier électronique à vous-même, vous connecter à un dB ou un fichier partagé, ou peut-être utiliser le journal des événements app ( lancer une exception d'application ).

Remarque: La première erreur vous indique que l'URI AutoDiscover est https://autodiscover.colpatria.com/autodiscover/autoDiscover.xml . Si cela remplacer la chaîne existante https://autodiscover-.outlook.com/autodiscover/autodiscover.xml ?

Voir aussi voir En conséquence, post sur Exchange AutoDiscovery et Validant une URL de redirection potentiellement dangereuse sur MSDN .


0 commentaires

3
votes

Après avoir rencontré des problèmes similaires récemment et travailler pour les résoudre, j'ai découvert un utilitaire / est très utile dans le dépannage: EWS Editeur Cela peut ne pas résoudre vos problèmes, mais peut être utilisé pour itérer très rapidement des combinaisons de configuration différentes, ce qui, espérons-le, je verront une lumière sur vos problèmes.

J'ai utilisé cette application lorsque vous travaillez avec un client pour établir des connexions AutoDiscover et URL de service aux serveurs Exchange de test et de produits. C'était pratique non seulement pour moi, mais également le personnel informatique du client. Ils ont téléchargé et utilisé l'utilitaire pour tester et vérifier leurs paramètres.

de http://ewseditor.codeplex.com :

Description du projet

ewseditor a trois objectifs:

  1. Démontrez la fonctionnalité de l'API gérée et la simplicité gérées aux développeurs à travers son code source.

  2. Démontrez le trafic SOAP d'Exchange Web Services utilisée pour effectuer des actions initiées via une interface utilisateur exploratrice.

  3. Assister les non-développeurs dans le débogage et la compréhension des magasins d'échange en explorant les articles, les dossiers et leurs propriétés en profondeur


0 commentaires

4
votes

Ceci est un ancien poste, je pensais que je mets dans une solution d'exemple complète pour l'erreur rapportée. Il suffit de remplacer SERVICE.AutODISCOVERURL ("Certainuer@somedomain.org"); strong> avec System.uri (" https://mail.somedomain.org/ews/exchange.asmx "); strong>

voici le bloc complet du code P>

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
                service.Credentials = new WebCredentials("someuser", "somepassword");
                //service.AutodiscoverUrl("someuser@somedomain.org");
                service.Url = new System.Uri("https://mail.somedomain.org/ews/Exchange.asmx");


0 commentaires

0
votes

essayer service.traceenabled = true;

wfm. Dans mon cas, je devais configurer SSL / TLS en installant un certificat à partir du serveur Exchange sur la machine cliente. J'ai été conduit à cette solution à partir de la sortie de la trace.


0 commentaires

0
votes

Cela fonctionne comme un charme pour moi:

 static bool RedirectionCallback(string url)
        {
            // Return true if the URL is an HTTPS URL.
            return url.ToLower().StartsWith("https://");
        }


0 commentaires

0
votes

Lorsque vous avez utilisé AutoDiscoverurl () avec RedirectionURLValidationCallback, voici un exemple de code:

        static bool RedirectionCallback(string url)
        {
            bool redirectionValidated = false;
            Uri redirectionUri = new Uri(url);

//There are two ways of implementing a RedirectionCallback scheme

// Way 1: Return true if the URL is an HTTPS URL.
            //return url.ToLower().StartsWith("https://");
            if (redirectionUri.Scheme == "https")
                redirectionValidated = true;

//Way 2: check if url is autodiscovery url
            if (url.Equals(
                "https://autodiscover-s.outlook.com/autodiscover/autodiscover.xml"))
                redirectionValidated = true;

            return redirectionValidated;
        }


0 commentaires