2012-07-13 18 views
7

यह मेरा परिदृश्य है: मुझे एक्सचेंज 2010 एसपी 2 खातों से ईमेल पढ़ना होगा। मुझे एक्सचेंज वेब सर्विसेज, पीओपी 3 और आईएमएपी का उपयोग करना है। मुझे अपने ऐप को ऐसे माहौल में जांचना है जहां लोग केवल इंट्रानेट में वेब ब्राउज़र के माध्यम से अपने खाते तक पहुंच सकते हैं। मैं सीधे अपने इंट्रानेट पर अपने ऐप को डीबग नहीं कर सकता।एक्सचेंज वेब सेवाओं का उपयोग करके ईमेल पढ़ें

"Autodiscover blocked a potentially insecure redirection to https://autodiscover.colpatria.com/autodiscover/autodiscover.xml . To allow Autodiscover to follow the redirection, use the AutodiscoverUrl(string, AutodiscoverRedirectionUrlValidationCallback) overload."

तो विधि RedirectionUrlValidationCallback लागू किया गया था, मैं:

service.AutodiscoverUrl(url); 

मैं इस त्रुटि मिलती है: यदि मैं इस लाइन का उपयोग

private void Dowork() 
{ 
    ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2); 

    string dominio = "domain"; 
    string usuario = "user"; 
    string password = "password"; 

    service.Credentials = new NetworkCredential(usuario, password, dominio); 

    string url = usuario + "@" + dominio + ".com"; 

    service.AutodiscoverUrl(url, RedirectionUrlValidationCallback); 
    //service.AutodiscoverUrl(url); 

    FindItemsResults<Item> findResults = service.FindItems(
     WellKnownFolderName.Inbox, 
     new ItemView(10)); 

    string content = string.Empty; 

    foreach (Item item in findResults.Items) 
    { 
     EmailMessage email = EmailMessage.Bind(service, item.Id); 
     email.Load(); 

     content += item.Subject + "\n"; 
     content += email.From.Address + "\n"; 
     content += email.Body + "\n\n"; 

     //Console.WriteLine(item.Subject); 
     //Console.WriteLine(email.From.Address); 
     //Console.WriteLine(email.Body); 
    } 

    string result = content; 
} 

// Create the callback to validate the redirection URL. 
static bool RedirectionUrlValidationCallback(String redirectionUrl) 
{ 
    // Perform validation. 
    return (redirectionUrl == "https://autodiscover-s.outlook.com/autodiscover/autodiscover.xml"); 
} 

: मैं एक खाते का उपयोग करने के लिए इस स्निपेट मुझे यकीन नहीं है कि यूआरएल सही है या नहीं। तथ्य यह है कि मुझे यह त्रुटि मिल रही है:

"The Autodiscover service couldn't be located".

क्या संभव है कि ऑटोडिस्कवर ठीक से कॉन्फ़िगर नहीं किया गया है ?? मैं एक्सचेंज व्यवस्थापक नहीं हूं, मैं कैसे जान सकता हूं कि ऑटोोडिस्कवर काम करता है ?? मुझे विनिमय प्रशासकों को यह बताने के लिए तर्क की आवश्यकता है कि यह सुविधा कॉन्फ़िगर की जानी चाहिए। किसी भी मदद के लिए धन्यवाद।

+2

मुझे यकीन है कि आप अब इस सवाल का एक साल पुराना है के रूप में से एक रास्ता मिल गया है हूँ, बस जोड़ने के लिए है कि का उपयोग कर बुला 'AutoDiscoverUrl' एक ही रास्ता EWS के साथ कनेक्ट करने के लिए नहीं है चाहता हूँ। यूआरएल को सीधे स्थापित करने के बजाय आप एक व्यवहार्य विकल्प हो सकते हैं। उदाहरण: 'service.Url = नए URI (" https: //your_exchange_server/EWS/Exchange.asmx ");' – Halvard

उत्तर

2

किसी भी तरह आपको redirectionUrl के परिणाम को लॉग इन करने की आवश्यकता है। आपको यह त्रुटि मिल जाएगी जब आपका redirectionUrl आपके द्वारा निर्दिष्ट यूआरआई से मेल नहीं खाता है (यानी आपका ऑटोडिस्कवर सत्यापन कॉलबैक FALSE देता है)। निश्चित रूप से redirectionUrl यूआरआई ऐसा नहीं है जो आपको लगता है। यदि आप SSL का उपयोग कर रहे हैं - आपको रीडायरेक्ट सत्यापन कॉलबैक को संभालने की आवश्यकता है।

चूंकि आप एप्लिकेशन को डीबग नहीं कर सकते हैं, शायद आप अपने आप को एक ईमेल भेज सकते हैं, साझा डीबी या फ़ाइल पर लॉग इन कर सकते हैं, या शायद ऐप इवेंट लॉग (एप्लिकेशन अपवाद फेंकने) का उपयोग कर सकते हैं।

नोट: पहली त्रुटि आपको बताती है कि ऑटोडिस्कवर यूआरआई https://autodiscover.colpatria.com/autodiscover/autodiscover.xml है। क्या यह मौजूदा स्ट्रिंग https://autodiscover-s.outlook.com/autodiscover/autodiscover.xml को प्रतिस्थापित करना चाहिए?

related SO post regarding Exchange Autodiscovery और Validating a Potentially Unsafe Redirection URL on MSDN देखें।

3

इसी तरह के मुद्दों में हाल ही में खत्म हो जाने और उन्हें हल करने के लिए काम कर रहा एक उपयोगिता है कि था की खोज की/समस्या निवारण में बहुत उपयोगी है: EWS Editor यह आपकी समस्याओं का समाधान नहीं हो सकता है, लेकिन बहुत जल्दी अलग विन्यास संयोजन से अधिक पुनरावृति करने के लिए इस्तेमाल किया जा सकता है जो उम्मीद है कि होगा अपने मुद्दों पर कुछ प्रकाश डाला।

मैंने क्लाइंट के साथ ऑटोडिस्कवर और सर्विस यूआरएल कनेक्शन स्थापित करने के लिए क्लाइंट के साथ काम करते समय एक्सचेंज सर्वर का परीक्षण और प्रोडक्शन करने के लिए इस ऐप का उपयोग किया। यह न केवल मेरे लिए बल्कि ग्राहक के आईटी कर्मचारियों के लिए भी आसान था। उन्होंने अपनी सेटिंग्स का परीक्षण और सत्यापन करने के लिए उपयोगिता को डाउनलोड और उपयोग किया।

http://ewseditor.codeplex.com से:

प्रोजेक्ट का विवरण

EWSEditor तीन गोल है:

  1. इसके स्रोत कोड के माध्यम से Exchange वेब सेवाओं प्रबंधित API कार्यक्षमता और डेवलपर्स के लिए सादगी का प्रदर्शन करें।

  2. Exchange वेब सेवाओं सोप एक अन्वेषक यूजर इंटरफेस के माध्यम से शुरू कार्रवाई करने के लिए इस्तेमाल किया यातायात का प्रदर्शन करें।

  3. गहराई

+1

EWSEditor GitHub पर अब है: https://github.com/dseph/EwsEditor – RenniePet

1

में आइटम, फ़ोल्डर और उनके गुणों की खोज से डिबगिंग में गैर डेवलपर्स और समझने एक्सचेंज भंडार असिस्ट यह एक पुराने पोस्ट मैंने सोचा कि मैं के लिए एक पूर्ण उदाहरण समाधान में डाल दिया था है त्रुटि की सूचना दी। सीधे शब्दों में service.AutodiscoverUrl ("[email protected]") की जगह; System.Uri ("https://mail.somedomain.org/ews/Exchange.asmx") के साथ;

यहाँ कोड का पूरा ब्लॉक

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

प्रयास करें service.TraceEnabled = true;

WFM है। मेरे मामले में मुझे एक्सचेंज सर्वर से क्लाइंट मशीन पर प्रमाणपत्र स्थापित करके SSL/TLS सेट अप करने की आवश्यकता थी। मुझे ट्रेस के आउटपुट से इस समाधान का नेतृत्व किया गया था।

0

यह मेरे लिए एक आकर्षण की तरह काम करता है:

var exchange = new ExchangeService(ExchangeVersion.Exchange2013_SP1); 
    var username = Settings.EmailUserName; 
    var password = Settings.EmailPassword; 
    var domain = Settings.EmailDomain; 
    var email = Settings.Email; 
    exchange.Credentials = new WebCredentials(email, password); 
    exchange.AutodiscoverUrl(email, RedirectionCallback); 

और RedirectionCallback है: https://msdn.microsoft.com/en-us/library/office/dd635285(v=exchg.80).aspx

सादर:

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

यहाँ लिंक है!

संबंधित मुद्दे

 संबंधित मुद्दे