长期潜伏,第一次海报。

我已经看到很多有关通过Exchange2010模拟的问题(这是我正在做的事情),但是到目前为止,我所看到的一切都与无效的代码语法或无效的密码有关。希望有人可以帮助我解决我的问题,这有点奇怪。我只是想发送一封电子邮件,从同一域的另一个日历中获取约会,然后发送列出了这些约会的电子邮件。

我的代码有效,但偶尔会出现以下错误:

An unhandled exception of type 'Microsoft.Exchange.WebServices.Data.AutodiscoverLocalException' occurred in Microsoft.Exchange.WebServices.dll
Additional information: The Autodiscover service couldn't be located.


我故意从代码中删除了任何错误检查,并使其在运行时崩溃。如果我立即重试,则可能会或可能不会。如果五分钟后重试,则显示相同的故事。大约有75%的时间在第一次运行时有效,对于我来说,我无法弄清楚自己在做错什么(错误指向RedirectionUrlValidationCallback,我也尝试对其进行调试检查) /测试无济于事)。我正在检查四个不同的日历,并且在同一行中的任何一个上都可能发生此错误。我看不到我的代码有什么问题,所以这真令人沮丧。

首先,我初始化东西以准备发送电子邮件:

using Microsoft.Exchange.WebServices.Data;

const int NUM_APPTS = 10;
ExchangeService serviceAuth = new ExchangeService(ExchangeVersion.Exchange2010);
serviceAuth.Credentials = new WebCredentials("[email protected]", "PASSHERE");
serviceAuth.AutodiscoverUrl("[email protected]", RedirectionUrlValidationCallback);


我写了电子邮件,等等,然后去检查日历并尝试查看条目:

ExchangeService serviceCALONE = new ExchangeService(ExchangeVersion.Exchange2010);
serviceCALONE.Credentials = new WebCredentials("[email protected]", "PASSHERE");
serviceCALONE.AutodiscoverUrl("[email protected]", RedirectionUrlValidationCallback);
CalendarFolder calendarCALONE = CalendarFolder.Bind(serviceCALONE, WellKnownFolderName.Calendar, new PropertySet());
CalendarView cViewCALONE = new CalendarView(startDate, endDate, NUM_APPTS);
cViewCALONE.PropertySet = new PropertySet(AppointmentSchema.Subject, AppointmentSchema.Start, AppointmentSchema.End);
FindItemsResults<Appointment> appointmentsCALONE = calendarCALONE.FindAppointments(cViewCALONE);


这是我在MSDN上其他地方使用的RedirectionURLValidationCallback函数:

private static bool RedirectionUrlValidationCallback(string redirectionUrl)
{
    // The default for the validation callback is to reject the URL.
    bool result = true;
    // This was changed to default to true because an error started appearing with:
    // "The autodiscover service could not be located"

    Uri redirectionUri = new Uri(redirectionUrl);

    if (redirectionUri.Scheme == "https")
    {
        result = true;
    }
    return result;
}


如您所见(除了我在学习过程中对自己发表评论的事实之外),无论如何我都尝试返回true。似乎没有任何改变的方式。

该错误可能在电子邮件初始化或日历检查期间发生,但是两次都在.AutodiscoverUrl行上。如果重要的话,我正在通过Rackspace托管的测试盒上运行它。

非常感谢任何帮助,谢谢!

最佳答案

尝试使用以下格式的Service.Credentials

Service.Credentials = new WebCredentials(username, password, domainname);


另外,检查电子邮件地址的密码是否已过期。
如果密码已过期,您将从自动发现中收到此错误。

外部测试自动发现的另一个故障排除选项是使用Microsoft Remote Connectivity Analyser

如果所有其他方法均失败,我建议启用Tracing来帮助解决问题。

关于c# - C#间歇性“找不到自动发现服务”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41247334/

10-11 20:36