Как исправить «Время ожидания операции» при попытке вызвать службу CRM 2011, добавив ее в качестве веб-ссылки в проект библиотеки .Net? - PullRequest
1 голос
/ 02 апреля 2011

Я добавил службы развертывания и обнаружения CRM 2011 (локальные) в качестве веб-ссылки (вместо ссылок на wcf) в проект библиотеки классов .Net 3.0, являющийся частью многоуровневого решения в .Net 2.0.(и в настоящее время не может быть обновлен, и именно поэтому я пытаюсь использовать службу wcf в качестве веб-службы и использовать ее привязку basichttp).Библиотека классов, которая также выполняется на удаленном сервере, скажем, удаленная библиотека, использует удаленное взаимодействие .Net.Я использую следующий код для создания организации CRM 2011.

_CrmDeployService = New DeploymentService()
        _CrmDeployService.SoapVersion = SoapProtocolVersion.Soap12

        _CrmDeployService.Url = CRMDeploymentServiceURl
        _CrmDeployService.Credentials = DomainCredentials

' Do all sorts of Active Directory STuff, 
'which is successfull
'Now Creat eCRM organization

 Dim CRMOrg As CRM2011DeploymentSvc.Organization = New CRM2011DeploymentSvc.Organization()
        CRMOrg.UniqueName = OrgUniqName
        CRMOrg.FriendlyName = OrgDispName
        CRMOrg.SqlServerName = SQLServerName
        CRMOrg.SrsUrl = ReportServerUrl
        CRMOrg.BaseCurrencyCode = CurrencyCode
        CRMOrg.BaseCurrencyName = CurrencyName
        CRMOrg.BaseCurrencySymbol = ""
        CRMOrg.State = CRM2011DeploymentSvc.OrganizationState.Enabled

    'Initialize Request Object to Send CRM Organization Request and set properties

      Dim req As New BeginCreateOrganizationRequest() With {.Organization = CRMOrg}
                    _CrmDeployService.Timeout = 720000
                    'Execute deployment service given createrequest object
                    Dim _
                        resp As BeginCreateOrganizationResponse = _
                            TryCast(_CrmDeployService.Execute(req), BeginCreateOrganizationResponse)

Приведенный выше код отлично работает, когда я выполняю его в отдельном приложении.Однако, когда я пишу тот же код в составе библиотеки удаленных классов проекта, кажется, что операция продолжается более 15 минут, а затем возвращается следующее сообщение из службы CRM, которое отображается

Тайм-аут операции

Я очень уверен, что с удаленными вызовами проблем нет.Я использую удаленные вызовы во всем своем решении, и также нет проблем с сериализацией.

Также ранее я пытался вызвать службу CRM 2011 по , а не , указав soap12 версия протокола: я получаю следующую ошибку:

HTTP / 1.1 415 Не удается обработать сообщение, так как тип содержимого 'text / xml;charset = utf-8 'не был ожидаемым типом' application / soap + xml;charset = utf-8 '.

Итак, я добавил следующую строку в мой код:

 _CrmDeployService.SoapVersion = SoapProtocolVersion.Soap12

и проблема исчезла, но теперь у меня проблема с тайм-аутом.

Вопрос: это проблема с настройками CRM на сервере или настройкой tiomeout HTTP на сервере или настройками сервиза WCF на сервере, или я все делаю неправильно?Если есть проблема с кодом, пожалуйста, предложите, как я должен это делать.

Если требуется какая-либо конфигурация или настройки, пожалуйста, сообщите также.

Ответы очень многооценил.

Спасибо.

1 Ответ

0 голосов
/ 15 апреля 2011

Полагаю, я обнаружил проблему. Служба WCF не возвращала ошибку, когда я использовал режим basicHttpBinding (Legacy Support Mode) и добавил службу WCF в режиме совместимости в качестве веб-службы.

Когда я удалил ссылку на веб-службу и добавил ее в качестве ссылки на службу WCF после обновления моего библиотечного проекта до версии 3.0, была возвращена правильная ошибка. Проблема заключалась в отсутствующих файлах конфигурации, содержащих информацию о конечной точке и привязке / контракте.

При разработке многоуровневых систем (.Net Remoting) и связи через службы WCF необходимо разместить информацию о конечной точке и привязке в файлах конфигурации приложения на всех уровнях, участвующих в обмене данными. Мой сценарий был такой:

Уровень 01 Приложение ASP.Net + Библиотека классов XYZ со ссылкой на WCf


Уровень 02 (Служба Windows (.Net Exe) + Библиотека классов XYZ со ссылкой на WCf) + Служба WCM CRM 2011)

Новая архитектура теперь:

Уровень 01 (Клиент) (Приложение ASP.Net (информация о конечной точке / привязке добавлена ​​в web.config) + Библиотека классов XYZ со справочной службой WCF)


Уровень 02 (Удаленный сервер) .Net Windows Service (информация о конечной точке / привязке добавлена ​​в app.config) + Библиотека классов XYZ со справочником услуг WCF) + CRM 2011 WCF Service

...