是否可以将浏览我的asp.net Web应用程序的用户凭据传递给EWS FindAppointments
电话?
我只是想为活动浏览用户返回日历详细信息,他们无疑有权阅读他们自己的日历,因此该问题不应与Exchange模拟与EWS api discussed here有关。 / p>
下面的代码在运行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访问被拒绝错误。
service.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
service.PreAuthenticate = true;
先感谢您的帮助。
可能相关或不相关的其他信息:
NetworkService
。UserEmailAddress
变量是根据System.Security.Principal.WindowsIdentity.GetCurrent().Name
编辑(2012年8月14日)
为了实现我上面要做的事情,我认为HostingEnvironment.Impersonate
不是必需的。
相反,我需要使用ExchangeService
的{{1}}属性。
关于here的更多细节
但问题是我们正在运行Exchange 2007而power shell command用于启用服务帐户以模拟所有用户(您将使用传入ImpersonatedUserId
参数)仅显示与Exchange 2010兼容
答案 0 :(得分:0)
您应该尝试使用WebCredentials
代替NetworkCredential
- 请参阅related SO post。 EWS和AutoDiscover
+ NetworkCredentials