我正在尝试创建一个ASP.NET(.NET 3.5)网站,通过Exchange Web服务连接到我们的Exchange 2010服务器,当我定义用户名,密码和域进行身份验证时,我能够连接到EWS但是如果可能的话,我想在我的代码中不包含登录详细信息。
在IIS中,我已在网站的web.config中为<authentication mode="Windows"/>
启用了网站的集成Windows身份验证。
以下代码是我一直在讨论的内容:
svc.UseDefaultCredentials = True
svc.Credentials = New WebCredentials()
svc.Url = New Uri(svcURL)
使用上面的代码我收到的消息是:
当您将请求作为没有邮箱的帐户发出时,您就是 必须为任何可分辨的邮箱主SMTP地址指定 文件夹ID。
当我尝试使用svc.Credentials = CredentialCache.DefaultNetworkCredentials
(代替svc.Credentials = New WebCredentials()
)时,收到错误消息:
无法将“System.Net.SystemNetworkCredential”类型的对象强制转换为 键入“Microsoft.Exchange.WebServices.Data.ExchangeCredentials”。
如前所述,唯一有效的方法是通过硬编码用户登录详细信息来定义要通过身份验证的用户凭据,我不想这样做:svc.Credentials = New WebCredentials("username","password","domain")
是否有人能够使用ASP.NET网站中当前登录用户的凭据对EWS进行身份验证?
答案 0 :(得分:2)
默认情况下,无法将用户的凭据从一个服务器(您承载ASP.NET站点的服务器)委派给另一个服务器(您的Exchange服务器)。这称为“服务器跃点”,Windows默认将其作为安全措施进行阻止。
您可以通过以下几种方法解决此问题: