Exchange Web服务自动发现非默认链接

时间:2014-01-31 21:00:48

标签: c# exchangewebservices exchange-server-2007

我正在编写一个在客户网络上的公用设备上运行的软件,但不在域上。自动发现服务在域外不可用,无论是在域上还是在Internet上。默认情况下,服务的工作方式都不会根据文档找到,但客户的IT人员告诉我,应该是:/,如果我可以通过他们给我的链接访问自动发现,它将全部工作。有没有办法覆盖默认方法并将此URL传递给自动发现?将链接硬编码到/exchange.asmx不是一个选项,也不是将此设备添加到域中。

我正在重复使用,现在正在调整,已经多次部署了一个经过验证的软件,但这种情况是第一次。

1 个答案:

答案 0 :(得分:1)

使用EWS托管API,您可以使用AutodiscoverService类来执行此操作。它有一个constructor,它将自动发现服务的URI作为参数。

您的代码看起来应该是这样的。请注意,我禁用了SCP查找,因为您不在域中。我实际上没有尝试过这段代码,但试一试:

AutodiscoverService ads = new AutodiscoverService(new Uri("..."));
ads.EnableScpLookup = false;
ads.Credentials = new NetworkCredential(...);
ads.RedirectionUrlValidationCallback = delegate { return true; };
GetUserSettingsResponse grResp = ads.GetUserSettings("someemail@domain.com", UserSettingName.ExternalEwsUrl);
Uri casURI = new Uri(grResp.Settings[UserSettingName.ExternalEwsUrl].ToString());

var service = new ExchangeService()
{
    Url = casURI,
    Credentials = ads.Credentials,
};