是否可以将浏览我的asp.net web应用程序的用户的凭据传递给EWS FindAppointments
调用?如何将HostingEnvironment.Impersonate凭据传递给ExchangeService EWS?
我只是试图返回活动浏览用户的日历详细信息,他们无疑有权读取他们自己的日历,因此该问题不应与Exchange模拟与EWS api discussed here相关。
下面的代码在运行localhost时工作得很好,但是从Web服务器运行,尽管配置了Windows身份验证和身份模拟,但会引发访问被拒绝错误。
using (HostingEnvironment.Impersonate())
{
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.UseDefaultCredentials = true;
service.AutodiscoverUrl(UserEmailAddress);
Mailbox mb = new Mailbox(UserEmailAddress);
FolderId cfCalendarFolderID = new FolderId(WellKnownFolderName.Calendar, mb);
CalendarView cvCalendarView = new CalendarView(DateTime.Now, DateTime.Now.AddDays(30), 1000);
cvCalendarView.MaxItemsReturned = 3;
也许我缺少一个简单的方法来传递HostingEnvironment
凭据我ExchangeService
对象?
有没有办法检查service.UseDefaultCredentials
是什么?
我无法使用以下内容,因为没有办法从windows身份验证的模拟用户获取密码。
service.Credentials = new System.Net.NetworkCredential(username, password, domain);
我也试过以下,但得到相同的ServiceResponseException拒绝访问errot。
service.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
service.PreAuthenticate = true;
在此先感谢您的协助。
其他信息可能会或可能不相关:
- 应用程序池标识的网站是
NetworkService
。 - 的
UserEmailAddress
变量是从公元查找基于System.Security.Principal.WindowsIdentity.GetCurrent().Name
编辑(2012年8月14日) 设置为实现我想上面做什么,我相信不需要HostingEnvironment.Impersonate
。 相反,我需要使用ExchangeService
的ImpersonatedUserId
属性。 关于此的更多详细信息here 虽然我们运行的Exchange 2007和power shell command只有一个问题,即启用服务帐户来模拟所有用户(您将使用传入.Credentials
参数)只能看起来与Exchange 2010兼容。
谢谢@SilverNinja,但恐怕换出'service.UseDefaultCredentials = TRUE;''为= service.Credentials新WebCredentials();'仍返回同样的错误。 我将尝试查看是否可以将Visual Studio调试程序附加到已发布的网站并对正在发送的凭据进行interogate。 – RichardD 2012-03-06 14:02:08