目前,我們有以下設置: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」附加。內部堆棧跟蹤再次沒有結果 - 但似乎又與認證問題有關。
任何人都可以建議這是否曾經見過,也許根本原因可能是什麼?
嗨Aloneguid,感謝響應和一些有趣的信息。但這裏的問題是不訪問郵箱。服務帳戶在訪問任何其他人的郵箱時工作正常(比如你假設郵箱在2010年)。這一切都很豪華。這裏的問題是訪問公共文件夾。使用EWS失敗。無論公用文件夾是存儲在Exchange 2003框中還是複製到2010年,它都會失敗,反之亦然。他們都失敗了。 – jallch 2011-03-24 09:59:12
我們也只在2010年嘗試了公共文件夾(例如從2003年刪除公共文件夾),但我們仍然遇到這些錯誤。很奇怪。門票與MS支持一起提出。但是,如果任何人有一個固定的超聲波,很好。 – jallch 2011-03-24 09:59:41