У меня есть приложение silverlight, встроенное в IFRAME в Dynamics CRM ... звонки после загрузки формы извлекают данные через мыльный клиент службы CRM. Клиент программно инициализируется с помощью URL-адреса и токена аутентификации CRM, введенного в заголовки.
Все это само по себе прекрасно работает.
Проблема возникла, когда я добавил анимацию "загрузка ...". Чтобы правильно отобразить анимацию, я упорядочил запросы на обслуживание в фоновом потоке, по сути заменив ...
QuestionContext.RetrieveOptions();
... с ...
ThreadPool.QueueUserWorkItem(delegate {
QuestionContext.RetrieveOptions();
});
В тот момент, когда я это делаю, я (несколько спорадически) получаю приглашение для ввода учетных данных. Отмена запроса приводит к ошибке «Не найдено» веб-службой.
Я поместил файл clientaccesspolicy.xml в корень CRMWeb, корень моего сайта ISV, а также в папку ClientBin, где находится мой .xap ... ни один из них не имеет значения.
ОБНОВЛЕНИЕ: Предоставление действительных учетных данных в приглашении не имеет никакого эффекта, приглашение появляется снова 3 раза, а затем мы возвращаемся к ошибке «Не найдено».
ОБНОВЛЕНИЕ: Я обернул ответы на вызовы службы проверкой ошибок, каждый раз при ошибке «Не найдено» просто повторный запрос. Теперь нажатие кнопки «Отмена» в запросе учетных данных при каждом его представлении в конечном итоге приводит к удовлетворению запросов. То есть он не всегда терпит неудачу, и повторная выдача запроса неопределенное количество раз в конечном итоге приводит к успеху.
Я также добавил Thread.Sleep () перед моим вызовом Execute () для мыльного клиента, чтобы посмотреть, не влияют ли эти вызовы друг на друга, но это, похоже, не имеет значения .