вторник, 27 марта 2012 г.

Customer portal или как исправить то, что вроде правильно написано.

Customer portal или как исправить то, что вроде правильно написано.

Вчера при использовании Customer portal столкнулся со следующей проблемой. Если изменять данные из портала, то изменения в портале корректно отображаются. Если же изменить данные через CRM, то в портале ничего не изменяется. Очистка куков, истории броузера ни к чему не приводят. Единственное что помогает - это рестарт пула приложения. Заставить клиентов каждый раз перегружать пул пока не получается.

Главная странность заключается в том, что при запросе данных от CRM с помощью XRM библиотеки, возвращаются неактуальные данные. Вот что с этим делать и почему это так было вообще не ясно. Я даже оставил свой вопрос на codeplex, но ответа нет до сих пор. Еще нашёл аналогичный вопрос 2010 года тоже без ответа. Но удача мне все же улыбнулась. Я так и не понял почему это происходит, но судя по тем статьям, что я прочитал библиотеки кешируют данные, которые получаются через LINQ запросы. Один из вариантов нормальной работы - это очистка кеша. Для этого необходимо вызвать следующий код:
//название сущности, кешированные данные которой я хочу удалить
string entityname = "contact";
BaseCache baseCache = Microsoft.Xrm.Client.Caching.CacheManager.GetBaseCache();
baseCache.Remove(string.Format("adxdependency:crm:entity:{0}",entityname));
Не уверен, что этот способ оптимален, и совсем правильный, но возможно это кому-нибудь поможет.

1 комментарий:

  1. Сегодня опять копаюсь с кастомер порталом. Вспомнил, что у тебя была подобная проблема. Залез в СДК, а там человеческое её решение - http://msdn.microsoft.com/en-us/library/gg695795.aspx

    ОтветитьУдалить