views:

642

answers:

2

I've recently coded a .NET Console app using C#. It's purpose was to read the emails within a specific folder, parse them for specific values and save them to a database.

Our email system, at the time I originally coded this, was Exchange 2003. However, I was made aware we would soon be upgrading to Exchange 2010: ergo, I built the code to work in both environments.

Following the migration to Exchange 2010, however, the app has broken.

The app uses the EWS API for 2010 functionality. When it attempts to use the ExchangeService's FindFolders method to find the publicfoldersroot, it throws an exception. Here's the code:

ExchangeService service = new ExchangeService();
FindFoldersResults findRootFldrs;

service.UseDefaultCredentials = true;
service.AutodiscoverUrl("[email protected]", delegate(string x) {
return true; });

FolderView fview = new FolderView(100);
fview.Traversal = FolderTraversal.Deep;

findRootFldrs = service.FindFolders(WellKnownFolderName.PublicFoldersRoot, 
fview);

The exception: ErrorInvalidSchemaVersionForMailboxVersion, aka:

"The mailbox that was requested doesn't support the specified RequestServerVersion"

I've attempted:

-Setting the exchangeservice to 2007 (throws an exception: "An internal server error occurred. The operation failed.")

-Giving myself the highest level of permission to the Public Folder (no effect)

-Manually setting my credentials (no effect)

I can view the public folders in Outlook 2007; the publicfoldersroot property is available in the intellisense; the code works on local folders (I can parse my inbox).

My current thinking is that it's a setting on the recent setup of Exchange 2010: unfortunately that isn't really my field. The exception tells me it's trying to use a previous version of Exchange. Setting it to 2007 simply causes the code to fail with an internal server error.

+1  A: 

This link might help

Ardman
+1  A: 

Have you tried esb.RequestServerVersion.Version = ExchangeVersionType. Exchange2010 (or SP1)

Nicolas Dorier