Как исправить время ожидания операции при попытке вызвать службу CRM 2011, добавив в качестве веб-ссылки в проект библиотеки .Net?

Я добавил службы развертывания и обнаружения CRM 2011 (локальные) в качестве веб-ссылки (вместо ссылок wcf) в проект библиотеки классов .Net 3.0, который является частью многоуровневого решения, которое находится в .Net 2.0 (и для в настоящее время нельзя обновить, и поэтому я пытаюсь использовать службу wcf как веб-службу и использовать ее базовую привязку http). Библиотека классов, также известная как удаленная библиотека, выполняется на удаленном сервере, скажем, в удаленной библиотеке, с использованием удаленного взаимодействия .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; кодировка=utf-8'.

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

 _CrmDeployService.SoapVersion = SoapProtocolVersion.Soap12

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

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

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

Ответы очень ценятся.

Спасибо.


person Steve Johnson    schedule 02.04.2011    source источник


Ответы (1)


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

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

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

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


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

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

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


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

person Steve Johnson    schedule 15.04.2011