问题描述:
误删地址列表中“所有会议室”,导致访问通讯簿时候有如下报错:
Request
Url: https://127.0.0.1:443/owa/forms/premium/AddressBook.aspx?ae=Dialog&t=AddressBook&pspid=_1272280692667_727880464
User host address: 127.0.0.1
User: mail5
EX Address: /o=First Organization/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=mail5
SMTP Address: mail5@test.local
OWA version: 14.0.639.21
Mailbox server: WIN-R3HHFBZ4JSZ.test.local
Exception
Exception type: System.NullReferenceException
Exception message: 未将对象引用设置到对象的实例。
Call stack
在 Microsoft.Exchange.Data.Directory.SystemConfiguration.AddressBookBase.GetAllRoomsAddressList(ClientSecurityContext clientSecurityContext, ADSystemConfigurationSession configurationSession) 在 Microsoft.Exchange.Clients.Owa.Core.UserContext.get_AllRoomsAddressList() 在 Microsoft.Exchange.Clients.Owa.Core.Directory.DirectoryAssistance.GetAllRoomsAddressBookInfo(UserContext userContext) 在 Microsoft.Exchange.Clients.Owa.Core.UserContext.get_AllRoomsAddressBookInfo() 在 Microsoft.Exchange.Clients.Owa.Premium.Controls.SecondaryNavigationDirectoryList.CreateCondensedDirectoryList(UserContext userContext, Boolean isRoomPicker) 在 Microsoft.Exchange.Clients.Owa.Premium.DirectoryView.RenderSecondaryNavigation(TextWriter output, UserContext userContext, Boolean isRoomPicker) 在 Microsoft.Exchange.Clients.Owa.Premium.Controls.NavigationHost.RenderSecondaryNavigation(TextWriter output, Boolean showContacts) 在 ASP.forms_premium_addressbook_aspx.__Render__control1(HtmlTextWriter __w, Control parameterContainer) 在 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) 在 System.Web.UI.Page.Render(HtmlTextWriter writer) 在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
解决途径:
先看下问题出在哪,PS下运行命令Get-OrganizationConfig,运行部分结果如下:
[PS] C:Windowssystem32>Get-OrganizationConfig
RunspaceId : 2ab8772c-967d-4a08-a296-30c5a6257fd1
Name : First Organization
LegacyExchangeDN : /o=First Organization
Heuristics : None
JournalingReportNdrTo :
ResourceAddressLists : {test.local/Configuration/Deleted Objects/所有会议室
DEL:a29e5736-92e0-4cd1-ac8a-05d662091de5}
IsMixedMode : False
IsAddressListPagingEnabled : True
红色标示属性ResourceAddressLists链接了一个已删除的对象。。。接下来就是修改adsiedit中属性的问题了。
1.重新创建名为“所有会议室”的地址列表,UI下搞不了,命令行更方便:
[PS] C:Windowssystem32>New-AddressList -Name 所有会议室 -RecipientFilter {(Alias -ne $null -and (RecipientDisplayType
-eq 'ConferenceRoomMailbox' -or RecipientDisplayType -eq 'SyncedConferenceRoomMailbox'))}
2.adsiedit.msc
CN=FirstOrganization,CN=MicrosoftExchange,CN=Services,CN=Configuration,DC=test,DC=local,右键属性,找到msExchResourceAddressLists,将其值修改为:
CN=所有会议室,CN=All Address Lists,CN=Address Lists Container,CN=First Organization,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=test,DC=local <步骤1中新创建的所有会议室地址列表>
3.重启下“Microsoft Exchange 通讯簿”服务。