2015-10-20 21 views
2

當我試圖找出通過uniqke密鑰請求參數當前聯繫人:Sitecore的:當前的接觸被鎖定爲識別

​​

我得到以下異常:

940 15:07:33 ERROR General error when submitting contact. 
Exception: System.InvalidOperationException 
Message: A contact is locked by another operation. 
Source: Sitecore.Analytics.MongoDB 
    at Sitecore.Analytics.Data.DataAccess.MongoDb.MongoDbContactStorage.LoadContactIdentifier(ID contactId, LeaseOwner leaseOwner) 
    at Sitecore.Analytics.Data.DataAccess.MongoDb.MongoDbDataAdapterProvider.SaveContactWithIdentifier(IContact contact, ContactSaveOptions saveOptions) 
    at Sitecore.Analytics.Data.DataAccess.MongoDb.MongoDbDataAdapterProvider.<>c__DisplayClass9.<SaveContact>b__7() 
    at Sitecore.Analytics.Data.DataAccess.MongoDb.MongoDbDataAdapterProvider.Try(Action action) 
    at Sitecore.Analytics.Data.DataAccess.MongoDb.MongoDbDataAdapterProvider.SaveContact(IContact contact, ContactSaveOptions saveOptions) 
    at Sitecore.Analytics.Data.ContactRepository.SaveContact(Contact contact, ContactSaveOptions options) 
    at Sitecore.Analytics.Tracking.ContactManager.SubmitContact(Contact contact, ContactSaveOptions options) 

能有什麼我確實解決了這個問題?還是有解決方法?

謝謝您的問候。

+0

你是什麼Sitecore的精確版本? –

+0

我們使用Sitecore 8.0 rev。 150812. – tngraessler

回答

2

爲什麼發生這種情況

通常情況下,你會看到這樣的錯誤,當你忘記設置Analytics.ClusterName配置文件Sitecore.Analytics.Tracking.config英寸這成爲一個問題,因爲在每個會話開始時,Sitecore通過在xDB中創建Lease來鎖定當前聯繫人。它使用Analytics.ClusterName作爲鎖的標識符。

您看到的錯誤是因爲您的Sitecore實例沒有意識到它擁有該聯繫人的租約,因爲缺少租賃所有者標識符。

如果你看一下在收集數據庫您的聯繫人,你很可能會看到這樣的內容:

enter image description here

正如你所看到的,Owner文件沒有Identifier字段集。這表明創建租約的實體未提供標識符(其值爲空字符串或null)。

解決方案

要在開發環境中解決這個問題,只需設置兩個Analytics.ClusterNameAnalytics.HostName設定值來訪問應用程序時,您使用的本地域名,例如sitecore

<setting name="Analytics.ClusterName" value="sitecore" /> 
<setting name="Analytics.HostName" value="sitecore" /> 

你可以閱讀更多關於這些設置here

UPDATE: Sitecore的增加了對這個問題的知識庫文章:https://kb.sitecore.net/articles/965127

+0

太棒了,我認爲它的工作原理!非常感謝你! :-) – tngraessler