por Alessandro Goncalves

Depois de algum tempo sem postar nenhum blog , gostaria de compartilhar um caso simples mas que ao mesmo tempo é extremamente interessante em como um pouco de observação pode nos levar a resolver problemas que aparentemente são difíceis.

Nesse incidente estávamos trabalhando com um problema de OWA. Toda vez que o cliente acessava a caixa postal através do OWA ele recebia uma página de erro com uma longa descrição. Na realidade um exception stack do .NET.

Para economizar tempo e espaço no BLOG vou colocar as linhas mais importantes

 

Request
Url: https://webmail.exchange.net:443/owa/forms/premium/StartPage.aspx
User host address: 192.168.0.100
User: testeowa
EX Address: /o=Exch2k7/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=testeowa
SMTP Address: testeowa@exchange.net
OWA version: 8.1.278.2
Mailbox server: inter1.exchange.net
Exception
Exception type: Microsoft.Exchange.Data.Storage.CorruptDataException
Exception message: Corrupt restriction filter data.
Call stack
Microsoft.Exchange.Data.Storage.FilterRestrictionConverter.GetPropertyDefinition(MapiProp mapiProp, PropTag propTag)

.

.

Inner Exception
Exception type: Microsoft.Exchange.Data.Storage.InvalidPropertyTypeException
Exception message: Unable to create custom property with property key [{00062002-0000-0000-c000-000000000046}:0x8232] type [Boolean].

Call stack
Microsoft.Exchange.Data.Storage.NativeStorePropertyDefinition.TryFindEquivalentDefinition(Key key, Boolean isCustom, PropType type, TypeCheckingFlag typeCheckingFlag, Boolean& createNewDefinition)

.

.

Microsoft.Exchange.Data.Storage.DefaultFolderManager.VerifyAndFixRemindersSearchFolder(StoreId reminderSearchFolderId)
Microsoft.Exchange.Data.Storage.DefaultFolderManager.GetDefaultFolderId(DefaultFolderType defaultFolderType)
Microsoft.Exchange.Clients.Owa.Core.UserContext.GetDefaultFolderId(DefaultFolderType defaultFolderType, String folderName)

Microsoft.Exchange.Clients.Owa.Core.UserContext.get_RemindersSearchFolderId()

Microsoft.Exchange.Clients.Owa.Premium.StartPage.OnInit(EventArgs e)
System.Web.UI.Control.InitRecursive(Control namingContainer)
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Inner Exception
Exception type: Microsoft.Exchange.Data.Storage.InvalidPropertyTypeException
Exception message: Unable to create custom property with property key [{00062002-0000-0000-c000-000000000046}:0x8232] type [Boolean].

Como podem notar destaquei a parte de Inner Exception e a seguinte parte:

Microsoft.Exchange.Clients.Owa.Core.UserContext.get_RemindersSearchFolderId()
Inner Exception
Exception type: Microsoft.Exchange.Data.Storage.InvalidPropertyTypeException
Exception message: Unable to create custom property with property key [{00062002-0000-0000-c000-000000000046}:0x8232] type [Boolean].

Ao realizarmos uma pesquisa para {00062002-0000-0000-c000-000000000046} , encontramos o seguinte :

"where {00062002-0000-0000-C000-000000000046} is the PSETID_Appointment namespace and 8257000B is the property tag of dispidApptCounterProposal"

Isso nos leva que a mensagem exposta no Inner Exception:

Exception message: Unable to create custom property with property key [{00062002-0000-0000-c000-000000000046}:0x8232] type [Boolean].

É relacionada com calendar itens. Como o comportamento não se faz presente quando utilizamos OWA Light podemos concluir com um nível de segurança que o problema se faz presente ao se processar calendar itens , nesse caso reminders. Para eliminar os reminders e testar acesso , podemos pedir ao usuário para desabilitar os reminders , ou podemos iniciar o Outlook com o switch /cleanreminders

Outlook.exe command line switches

Após realizar esse procedimento , o acesso ao OWA para aquele usuário em particular foi restabelecido.