是否可以將瀏覽我的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