OAB issue... im at wits end

Hi everyone,

Recently, a mailbox shared by users on my Exchange 2013 sp1 CU7 server stopped sending email. The mailbox receives fine, access is fine, and users gave full permissions to do the FROM option in Outlook to send from this (Help Desk) mailbox or their own mailboxes. Each users Outlook has their main account and the Help Desk account set up locally.

Everything worked fine, then one day when any user chooses to create a new message from the help Desk mailbox and send, they get error -

0x8004010F Outlook data File cannot be accessed

I understand this has to do with the OAB, because I can send from the same Help Desk address using the GAL with no problem. But this isnt a work around for me, users must be able to send from this Help Desk box and the sent email has to be in the Help Desk sent. Sending it via the GAL put the sent message in the users sent. 

Another issue I see is that the Address Book hangs when downloading and no users have the .oab files in their local profile where they should be. I ran a manual update with PowerShell on the server and I see all the files updated and are there, but they arent reaching the clients. I looked at the permissions on the Exchange back end OAB in IIS and its set for Windows authentication.

 

I cant figure out whats wrong its literally driving me insaneany help would be appreciated. 

January 7th, 2015 10:07pm

What happens when they download the address book?  Does it appear to complete successfully?  Can other users see the GAL when working offline and it is up to date?

Have you deleted and recreated the mailbox cache on the problem computer?

Free Windows Admin Tool Kit Click here and download it now
January 7th, 2015 10:30pm

Thanks for the reply..

This problems affects all users who are linked to this mailbox so its not a particular PC. My PC is linked to this mailbox as well, and I dropped my profile and recreated, same thing. The profile autodiscovers OK on creation..

The address book download just hangs eventually after a few hours the message updating Address Books disappears but I see no .oab files in the local profile where they should be. Just the ost files and the autodiscover files. If I try to do the download manually it hands. No error, just hangs

One thing that i noticed i forgot to add. If i get an email to the help desk and hit reply, it sends fine. But like i said if a user creates new and then chooses FROM and chooses help Desk instead of their own email address..it fails with that error. 

January 7th, 2015 10:37pm

Here is what i get when i try to update the GAL in Poweshell

[PS] C:\Users\administrator.PASINC\Desktop>Update-GlobalAddressList

cmdlet Update-GlobalAddressList at command pipeline position 1
Supply values for the following parameters:
Identity: Default Global Address List
WARNING: The recipient "PASINC/Microsoft Exchange System Objects/OAB Version 2" is
WARNING: The recipient "PASINC/Microsoft Exchange System Objects/Offline Address Bo
\/o=PAS\/cn=addrlists\/cn=oabs\/cn=Default Of" is invalid and couldn't be updated.

Yet when i do the GET command of the OAB it says its version 4 ??

Default Offline Address List (Ex2012)   {Version4}                              {\Default Global Address List
Free Windows Admin Tool Kit Click here and download it now
January 7th, 2015 10:59pm

Your easiest course of action is probably to create a new OAB and link it to all of your Exchange 2013 mailbox databases.  This is usually a whole lot easier than trying to debug cross-version issues and there's no real downside.  When you've removed the old version servers, you can remove the old OAB.
January 8th, 2015 4:22am

Hi Ric,

In Exchange 2013, the OAB files are generated and stored in the Organization Mailbox first and later copied to the %ExchangeInstallPath%\ClientAccess\OAB\ folder. Please check the following path in your Exchange 2013:

C:\Program Files\Microsoft\Exchange Server\V15\ClientAccess\OAB

In my test Exchange server (Exchange 2013 CU1), there is a folder named e59fb2f5-cb2d-4bd5-9c08-d6560d5b553f. Please verify the folder modified date and confirm the folder is latest. If there is no OAB folder in this path, please restart the Microsoft Exchange Mailbox Assistants service on mailbox 2013 to generate the OAB.

If the OAB file cant be generated, please check the Organization Mailbox which is used to generate OAB:

Get-Mailbox -Arbitration | where {$_.PersistedCapabilities -like "*oab*"} | ft name,servername

If the OAB file is listed and updated in the server folder, but it cant be download to all Outlook clients, please check your OAB virtual directory configuration:

Get-OabVirtualDirectory | FL Identity,name,*URL*,*auth*

Get-OfflineAddressBook | fl Identity,Name,Server,IsDefault,virtualdirectories,*Distribution*

Regards,

Free Windows Admin Tool Kit Click here and download it now
January 8th, 2015 12:32pm

Hi..thanks for all the relies guys...

The OAB directory has a date of 1/7 for the folder containing the LZX files. 

Here is what i get when i run the GET-OAB - 

Identity                      : PAS-EXCHANGE\OAB (Default Web Site)
Name                          : OAB (Default Web Site)
InternalUrl                   : https://pas-exchange.pasinc/oab
ExternalUrl                   : https://owa.pasolutions.com/OAB
BasicAuthentication           : True
WindowsAuthentication         : True
OAuthAuthentication           : True
InternalAuthenticationMethods : {Basic, WindowsIntegrated, OAuth}
ExternalAuthenticationMethods : {Basic, WindowsIntegrated, OAuth}

when i run the Get-OfflineAddressBook i get this - 

Identity                         : \Default Offline Address List (Ex2012)
Name                             : Default Offline Address List (Ex2012)
Server                           :
IsDefault                        : True
VirtualDirectories               : {PAS-EXCHANGE\OAB (Default Web Site), PAS-EXCHANGE\OAB (Exchange Back End)}
PublicFolderDistributionEnabled  : False
GlobalWebDistributionEnabled     : False
WebDistributionEnabled           : True
ShadowMailboxDistributionEnabled : False

The first command looks fine in terms of the OAB, not sure on the second. Any ideas?? My Outlook right now says updating address books, it just hangs doing it...

January 8th, 2015 5:12pm

Hey all... I had to bump this thread... its driving me nuts...
Free Windows Admin Tool Kit Click here and download it now
January 9th, 2015 6:28am

The LZX files aren't used anymore.  Everything is served out of the system mailbox dedicated to the OAB.  Watch the event logs on the OAB generating server (a property of the OAB) to verify that it's generating on schedule and not throwing warnings
January 9th, 2015 10:23am

Hi Ed,

here is what i found in the even log...its marked with OAB...

Log Name:      Application
Source:        ASP.NET 4.0.30319.0
Date:          1/12/2015 12:00:18 PM
Event ID:      1309
Task Category: Web Event
Level:         Warning
Keywords:      Classic
User:          N/A
Computer:      PAS-EXCHANGE.PASINC
Description:
Event code: 3005 
Event message: An unhandled exception has occurred. 
Event time: 1/12/2015 12:00:18 PM 
Event time (UTC): 1/12/2015 5:00:18 PM 
Event ID: 7726f7b41a114ffabb1d28a8afb61e98 
Event sequence: 4900 
Event occurrence: 1633 
Event detail code: 0 
 
Application information: 
    Application domain: /LM/W3SVC/1/ROOT/OAB-1-130654962877356976 
    Trust level: Full 
    Application Virtual Path: /OAB 
    Application Path: D:\Exchange 2013\FrontEnd\HttpProxy\OAB\ 
    Machine name: PAS-EXCHANGE 
 
Process information: 
    Process ID: 21196 
    Process name: w3wp.exe 
    Account name: NT AUTHORITY\SYSTEM 
 
Exception information: 
    Exception type: FileNotFoundException 
    Exception message: Could not load file or assembly 'Microsoft.Exchange.FrontEndHttpProxy' or one of its dependencies. The system cannot find the file specified.
   at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type)
   at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName)
   at System.Type.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase)
   at System.Web.Compilation.BuildManager.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase)
   at System.Web.Configuration.HandlerFactoryCache.GetTypeWithAssert(String type)
   at System.Web.Configuration.HandlerFactoryCache.GetHandlerType(String type)
   at System.Web.Configuration.HandlerFactoryCache..ctor(String type)
   at System.Web.HttpApplication.GetFactory(String type)
   at System.Web.HttpApplication.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

 
 
Request information: 
    Request URL: https://localhost:443/OAB/ 
    Request path: /OAB/ 
    User host address: 127.0.0.1 
    User:  
    Is authenticated: False 
    Authentication Type:  
    Thread account name: NT AUTHORITY\SYSTEM 
 
Thread information: 
    Thread ID: 28 
    Thread account name: NT AUTHORITY\SYSTEM 
    Is impersonating: False 
    Stack trace:    at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type)
   at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName)
   at System.Type.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase)
   at System.Web.Compilation.BuildManager.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase)
   at System.Web.Configuration.HandlerFactoryCache.GetTypeWithAssert(String type)
   at System.Web.Configuration.HandlerFactoryCache.GetHandlerType(String type)
   at System.Web.Configuration.HandlerFactoryCache..ctor(String type)
   at System.Web.HttpApplication.GetFactory(String type)
   at System.Web.HttpApplication.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
 
 
Custom event details: 

Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="ASP.NET 4.0.30319.0" />
    <EventID Qualifiers="32768">1309</EventID>
    <Level>3</Level>
    <Task>3</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2015-01-12T17:00:18.000000000Z" />
    <EventRecordID>10124854</EventRecordID>
    <Channel>Application</Channel>
    <Computer>PAS-EXCHANGE.PASINC</Computer>
    <Security />
  </System>
  <EventData>
    <Data>3005</Data>
    <Data>An unhandled exception has occurred.</Data>
    <Data>1/12/2015 12:00:18 PM</Data>
    <Data>1/12/2015 5:00:18 PM</Data>
    <Data>7726f7b41a114ffabb1d28a8afb61e98</Data>
    <Data>4900</Data>
    <Data>1633</Data>
    <Data>0</Data>
    <Data>/LM/W3SVC/1/ROOT/OAB-1-130654962877356976</Data>
    <Data>Full</Data>
    <Data>/OAB</Data>
    <Data>D:\Exchange 2013\FrontEnd\HttpProxy\OAB\</Data>
    <Data>PAS-EXCHANGE</Data>
    <Data>
    </Data>
    <Data>21196</Data>
    <Data>w3wp.exe</Data>
    <Data>NT AUTHORITY\SYSTEM</Data>
    <Data>FileNotFoundException</Data>
    <Data>Could not load file or assembly 'Microsoft.Exchange.FrontEndHttpProxy' or one of its dependencies. The system cannot find the file specified.
   at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type)
   at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark&amp; stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName)
   at System.Type.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase)
   at System.Web.Compilation.BuildManager.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase)
   at System.Web.Configuration.HandlerFactoryCache.GetTypeWithAssert(String type)
   at System.Web.Configuration.HandlerFactoryCache.GetHandlerType(String type)
   at System.Web.Configuration.HandlerFactoryCache..ctor(String type)
   at System.Web.HttpApplication.GetFactory(String type)
   at System.Web.HttpApplication.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean&amp; completedSynchronously)

</Data>
    <Data>https://localhost:443/OAB/</Data>
    <Data>/OAB/</Data>
    <Data>127.0.0.1</Data>
    <Data>
    </Data>
    <Data>False</Data>
    <Data>
    </Data>
    <Data>NT AUTHORITY\SYSTEM</Data>
    <Data>28</Data>
    <Data>NT AUTHORITY\SYSTEM</Data>
    <Data>False</Data>
    <Data>   at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type)
   at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark&amp; stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName)
   at System.Type.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase)
   at System.Web.Compilation.BuildManager.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase)
   at System.Web.Configuration.HandlerFactoryCache.GetTypeWithAssert(String type)
   at System.Web.Configuration.HandlerFactoryCache.GetHandlerType(String type)
   at System.Web.Configuration.HandlerFactoryCache..ctor(String type)
   at System.Web.HttpApplication.GetFactory(String type)
   at System.Web.HttpApplication.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean&amp; completedSynchronously)
</Data>
  </EventData>
</Event>

Free Windows Admin Tool Kit Click here and download it now
January 12th, 2015 8:04pm

I'm having this same issue with the same event error as above. Cant download OAB and I get the event id 1309 with source asp.net 4.0. Is there any more info on the fix for this? 
February 26th, 2015 3:16pm

Anyone able to find a fix for this issue.  I have rebuild the VDirs several times and modified all the web.config files, but still getting the same symptoms that everyone mentions in this thread.  if I had hair, i'd have it all pulled out by now.
Free Windows Admin Tool Kit Click here and download it now
August 18th, 2015 2:23pm

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics