2011-03-23 43 views
0

目前,我們有以下設置:EWS錯誤訪問公用文件夾 - Exchange 2010中有了複製的Exchange 2003公用文件夾

單個Exchange 2003服務器 - 同時運行Exchange 2010公用文件夾數據庫 單個Exchange 2010服務器 - 同時運行Exchange 2010公用文件夾數據庫&客戶端訪問角色(例如與EWS,OWA等)

我們在2010年公用文件夾和公共文件夾在2003年舉行。我們複製公用文件夾兩種方式之間的服務器(配置通過公用文件夾管理控制檯)。

我們擁有Exchange 2010郵箱的測試帳戶,郵箱擁有最高級別的權限(域管理員和Exchange內的「組織管理」)。這個用戶被稱爲「灰色」。已明確授予該用戶對2010年公用文件夾數據庫和2003年公用文件夾數據庫中所有公用文件夾的完全所有權。我們可以確認,我們可以通過OWA和Outlook完全訪問和使用公共文件夾。

我們遇到的問題是通過Exchange訪問公用文件夾。我們可以確認訪問郵箱本身的普通文件夾不是問題,並且工作正常。

當通過公共文件夾運行以下簡單的代碼片段循環,我們打了一個錯誤:

public static void PublicFolderTest() 
    { 
     // Connect to Exchange Web Services 
     ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010); 
     service.Url = new Uri("https://gblonxch11/EWS/Exchange.asmx"); 
     service.Credentials = new WebCredentials("[email protected]", "Welcome1"); 
     System.Net.ServicePointManager.ServerCertificateValidationCallback = ((sender, certificate, chain, sslPolicyErrors) => true); 

     FolderView folderView = new FolderView(int.MaxValue); 

     FindFoldersResults findResults = service.FindFolders(WellKnownFolderName.PublicFoldersRoot, folderView); 

     if (findResults.Folders.Count > 0) 
     { 
      Console.WriteLine("Looping Through Public Folders"); 
     } 

    } 

這段代碼與FindFolders失敗調用與下面的錯誤堆棧:

Microsoft.Exchange.WebServices.Data.ServiceResponseException was unhandled 
Message=The mailbox that was requested doesn't support the specified RequestServerVersion. 
Source=Microsoft.Exchange.WebServices 
StackTrace: 
     at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ProcessWebException(WebException webException) 
     at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.InternalExecute() 
     at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.Execute() 
     at Microsoft.Exchange.WebServices.Data.ExchangeService.InternalFindFolders(IEnumerable`1 parentFolderIds, SearchFilter searchFilter, FolderView view, ServiceErrorHandling errorHandlingMode) 
     at Microsoft.Exchange.WebServices.Data.ExchangeService.FindFolders(FolderId parentFolderId, FolderView view) 
     at Microsoft.Exchange.WebServices.Data.ExchangeService.FindFolders(WellKnownFolderName parentFolderName, FolderView view) 
     at testspace.Program.PublicFolderTest() in F:\Source Code\TestApp\TestApp\Program.cs:line 40 
     at testspace.Program.Main(String[] args) in F:\Source Code\TestApp\TestApp\Program.cs:line 26 
     at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) 
     at System.AppDomain.nExecuteAssembly(RuntimeAssembly assembly, String[] args) 
     at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 
     at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
     at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
     at System.Threading.ThreadHelper.ThreadStart() 
    InnerException: 

我們還在IIS中爲EWS應用程序打開了「失敗的請求追蹤」。內部堆棧跟蹤附加爲文件「UsingExchangeVersion2010.zip」。錯誤堆棧不確定 - 但在堆棧內部存在與身份驗證問題相關的錯誤。

我們也嘗試設置由EWS使用的ExchangeVersion管理API是Exchange2007_SP1:

public static void PublicFolderTest() 
    { 
     // Connect to Exchange Web Services 
     ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1); 
     service.Url = new Uri("https://gblonxch11/EWS/Exchange.asmx"); 
     service.Credentials = new WebCredentials("[email protected]", "Welcome1"); 
     System.Net.ServicePointManager.ServerCertificateValidationCallback = ((sender, certificate, chain, sslPolicyErrors) => true); 

     FolderView folderView = new FolderView(int.MaxValue); 

     FindFoldersResults findResults = service.FindFolders(WellKnownFolderName.PublicFoldersRoot, folderView); 

     if (findResults.Folders.Count > 0) 
     { 
      Console.WriteLine("Looping Through Public Folders"); 
     } 

    } 

這將導致一個錯誤,但略有不同的錯誤:

Microsoft.Exchange.WebServices.Data.ServiceResponseException was unhandled 
Message=An internal server error occurred. The operation failed. 
Source=Microsoft.Exchange.WebServices 
StackTrace: 
     at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ProcessWebException(WebException webException) 
     at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.InternalExecute() 
     at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.Execute() 
     at Microsoft.Exchange.WebServices.Data.ExchangeService.InternalFindFolders(IEnumerable`1 parentFolderIds, SearchFilter searchFilter, FolderView view, ServiceErrorHandling errorHandlingMode) 
     at Microsoft.Exchange.WebServices.Data.ExchangeService.FindFolders(FolderId parentFolderId, FolderView view) 
     at Microsoft.Exchange.WebServices.Data.ExchangeService.FindFolders(WellKnownFolderName parentFolderName, FolderView view) 
     at testspace.Program.PublicFolderTest() in F:\Source Code\TestApp\TestApp\Program.cs:line 40 
     at testspace.Program.Main(String[] args) in F:\Source Code\TestApp\TestApp\Program.cs:line 26 
     at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) 
     at System.AppDomain.nExecuteAssembly(RuntimeAssembly assembly, String[] args) 
     at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 
     at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
     at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
     at System.Threading.ThreadHelper.ThreadStart() 
    InnerException: 

堆棧跟蹤內部內EWS的IIS作爲文件「UsingExchangeVersion2007.zip」附加。內部堆棧跟蹤再次沒有結果 - 但似乎又與認證問題有關。

任何人都可以建議這是否曾經見過,也許根本原因可能是什麼?

回答

0

我在這裏可以看到幾個問題:

所有的
  1. 首先,你不能一個具有超級用戶帳戶在Exchange 2007和2010年訪問郵箱。如果用戶是任何Exchange管理組的成員,他將被明確拒絕通過EWS API訪問郵箱。不過,他可以是域管理員或本地管理員。因此,檢查您在EWS中使用的帳戶是不是。

  2. 在您的混合環境中 - 2010 &(2007或2010)在2010年擁有CAS服務器並不意味着您可以從EWS訪問2003郵箱。唯一的方法是將郵箱從2003存儲遷移到2007存儲。這可能是你得到第一個例外的原因,也是第二個例外。

  3. 我不太確定公共文件夾在Exchange內部如何工作,從未與他們合作過,但我可以建議這只是一種特殊類型的郵箱。在這種情況下,您的用戶必須具有模擬權限。從授予交流控制檯的完全訪問不會幫助 - 這已經足夠了僅在2007年這是一個鏈接,如何在2010年開啓的模擬:http://msdn.microsoft.com/en-us/library/bb204095.aspx

歡迎交流的世界。

+1

嗨Aloneguid,感謝響應和一些有趣的信息。但這裏的問題是不訪問郵箱。服務帳戶在訪問任何其他人的郵箱時工作正常(比如你假設郵箱在2010年)。這一切都很豪華。這裏的問題是訪問公共文件夾。使用EWS失敗。無論公用文件夾是存儲在Exchange 2003框中還是複製到2010年,它都會失敗,反之亦然。他們都失敗了。 – jallch 2011-03-24 09:59:12

+1

我們也只在2010年嘗試了公共文件夾(例如從2003年刪除公共文件夾),但我們仍然遇到這些錯誤。很奇怪。門票與MS支持一起提出。但是,如果任何人有一個固定的超聲波,很好。 – jallch 2011-03-24 09:59:41

0

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010)

試試這個

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1) 
相關問題