我创建了一个ascx控件,用于在Sharepoint中通过它的Web服务访问Exchange 2010。当它在自己的ASP.NET测试站点中运行时(包含在一个简单的aspx页面中)一切正常。只要在Sharepoint中使用该控件,就会遇到“无法找到自动发现服务”错误。
ascx控件的dll背后的代码已经被放入GAC和Microsoft.Exchange.WebServices.dll
Microsoft.Exchange.WebServices.dll也已添加到web.config中安全控制列表中的sharepoint站点:
<SafeControl Assembly="Microsoft.Exchange.WebServices, Version=14.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Namespace="Microsoft.Exchange.WebServices" TypeName="*" Safe="True" />
我可以ping自动发现服务,并从Sharepoint服务器访问Exchange Web服务URL https://mydomain.com/EWS/Services.wsdl。
用户名和密码将在后面的ascx代码中发送到服务:
Dim service As ExchangeService = New ExchangeService()
service.Credentials = New WebCredentials(usrExchange, pwdExchange)
service.ImpersonatedUserId = New ImpersonatedUserId(ConnectingIdType.SmtpAddress, email)
有趣的是,如果我为服务指定了网址https://mydomain.com/EWS/Exchange.asmx,我会收到405 Method not allowed错误。
任何人都有任何想法可能是什么问题?
干杯, 加文
答案 0 :(得分:1)
我遇到了同样的问题,我想我找到了解决方案。我必须在“管理信任”下将交换服务器使用的域根证书添加到SharePoint。
之后,一切都像魅力一样!
答案 1 :(得分:0)
ascx控件可以作为运行SharePoint的帐户执行Web服务调用。该帐户可能无法访问Exchange Web服务。