2

Ich lade eine C# -Konsolenanwendung als Azure-Webjob hoch. Der Fehler Ich erhalte ist:Azure Webjob: C# - Der AutoErmittlungsdienst konnte nicht gefunden werden Fehler

Unbehandelte Ausnahme: Microsoft.Exchange.WebServices.Data.AutodiscoverLocalException: Der Autoermittlungsdienst konnte nicht gefunden werden.

bei Microsoft.Exchange.WebServices.Autodiscover.AutodiscoverService.InternalGetLegacyUserSettings [TSettings] (String Emailaddress List1 redirectionEmailAddresses, Int32 & currentHop)

bei Microsoft.Exchange.WebServices.Autodiscover.AutodiscoverService.GetLegacyUserSettings [TSettings] (String emailaddress)

bei Microsoft.Exchange.WebServices.Autodiscover.AutodiscoverService.InternalGetLegacyUserSettings (String Emailaddress List`1 requestedSettings)

bei Microsoft.Exchange.WebServices.Autodiscover.AutodiscoverService.GetUserSettings (String userSmtpAddress, UserSettingName [] userSettingNames)

bei Microsoft.Exchange.WebServices.Data.ExchangeService.GetAutodiscoverUrl (String Emailaddress Exchange requestedServerVersion, AutodiscoverRedirectionUrlValidationCallback validateRedirectionUrlCallback)

bei Microsoft.Exchange.WebServices.Data.ExchangeService.AutodiscoverUrl (String Emailaddress AutodiscoverRedirectionUrlValidationCallback validateRedirectionUrlCallback)

hier mein Code:

private static bool RedirectionUrlValidationCallback(string redirectionUrl) 
{ 
    // The default for the validation callback is to reject the URL. 
    bool result = false; 

    Uri redirectionUri = new Uri(redirectionUrl); 

    // Validate the contents of the redirection URL. In this simple validation 
    // callback, the redirection URL is considered valid if it is using HTTPS 
    // to encrypt the authentication credentials. 
    if (redirectionUri.Scheme == "https") 
    { 
     result = true; 
    } 
    return result; 
} 
static void Main(string[] args) 
{ 
    ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1); 

    service.Credentials = new WebCredentials("[email protected]", "myPassword", "mysite.com"); 
    service.AutodiscoverUrl("[email protected]", RedirectionUrlValidationCallback); 

    // More irrelevant code here 
} 

Der obige Code von dieser Frage als akzeptierte Antwort genommen wurde: Connection to Office 365 by EWS API

diesen Code läuft auf meinem Rechner als Konsolenanwendung läuft Alles gut. Aber das als Webjob Fehler, kann jemand helfen?

+0

Ich hatte Probleme EWS auf Azure verwenden und nach schließlich entschieden nach Antworten Jagd nur die Konsolenanwendung auf einem lokalen Server anstatt zu laufen und verwendeten Taskplaner, um es – hellyale

+0

@hellyale hoffentlich auf einem festgelegten Zeitplan laufen zu lassen wir diagnostizieren das Problem, aber leider habe ich nicht den Komfort, auf einen lokalen Server für das Verfahren zurückgreifen. :( – NoReceipt4Panda

Antwort

2

Ich habe Ihren Code mit meinem Office 365-Konto getestet, es hat auf meiner Seite gut funktioniert. Ich verwende Console.WriteLine auch, um die Rückgabe-URL und die Service-URL auszudrucken. Hier ist, was ich im WebJob-Dashboard sehe.

[05/24/2017 05:54:52 > 7adbf1: SYS INFO] Run script 'TestO365WebJob.exe' with script host - 'WindowsScriptHost' 
[05/24/2017 05:54:52 > 7adbf1: SYS INFO] Status changed to Running 
[05/24/2017 05:54:59 > 7adbf1: INFO] return URL: https://autodiscover-s.outlook.com/autodiscover/autodiscover.xml 
[05/24/2017 05:55:00 > 7adbf1: INFO] Service URL https://outlook.office365.com/EWS/Exchange.asmx 

Bitte überprüfen Sie Ihren Benutzernamen und Ihr Passwort. Sind sie richtig und ist Ihr Passwort abgelaufen?

Um die Detailinformationen eines fehlgeschlagenen Grundes zu erhalten, könnten wir das Anwendungsprotokoll in Ihrem Web-App-Fenster Diagnoseprotokolle aktivieren und die Eigenschaft TraceEnabled auf true setzen. Wir können herausfinden, was falsch war, indem wir die Trace-Logs der Anwendung anzeigen.

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1); 
service.TraceEnabled = true; 

Darüber hinaus gibt es nur einen EWS-Endpunkt in Office365. Wir können die Service-URL direkt festlegen, anstatt Auto-discover zu verwenden. Code unten ist für Ihre Referenz.

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1); 
service.Credentials = new WebCredentials("[email protected]", "password", "domain.onmicrosoft.com"); 
service.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx"); 
+0

Die Verwendung der Service-URL direkt funktioniert wie ein Charme! Scheint, als würde AutoDiscover diesen Prozess auch verlangsamen, da dieser direkte URL-Prozess schneller ist. – NoReceipt4Panda

Verwandte Themen