我正在编写一个在客户网络上的公用设备上运行的软件,但不在域上。自动发现服务在域外不可用,无论是在域上还是在Internet上。默认情况下,服务的工作方式都不会根据文档找到,但客户的IT人员告诉我,应该是:/,如果我可以通过他们给我的链接访问自动发现,它将全部工作。有没有办法覆盖默认方法并将此URL传递给自动发现?将链接硬编码到/exchange.asmx不是一个选项,也不是将此设备添加到域中。
我正在重复使用,现在正在调整,已经多次部署了一个经过验证的软件,但这种情况是第一次。
答案 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,
};