Подключение к конечной точке mscrmservices / 2007 / CrmService.asmx в CRM 2011 IFD / ADFS - PullRequest
3 голосов
/ 15 декабря 2011

Мы только что обновили Microsoft Dynamics CRM 4 до Microsoft Dynamics CRM 2011. Большая часть обновления прошла гладко, однако у меня есть некоторый пользовательский код (написанный для CRM 4), который был реализован как страница ASPX в ISM CRM 4 папка. Этот код перестал работать после обновления.

Наш сервер Dynamics CRM 2011 настроен на Premise как развертывание IFD.

Код подключается к серверу CRM следующим образом:

using (new CrmImpersonator())
         {
             string crmurl = "https://<server>:444/<org>/mscrmservices/2007/CrmService.asmx";
             string orgname = <org>;

             CrmAuthenticationToken token = CrmAuthenticationToken.ExtractCrmAuthenticationToken(context, orgname);
             token.OrganizationName = orgname;

             token.AuthenticationType = 0;

             CrmService service = new CrmService();
             service.Credentials = System.Net.CredentialCache.DefaultCredentials;
             service.CrmAuthenticationTokenValue = token;
             service.Url = crmurl;

             WhoAmIRequest who = new WhoAmIRequest();
             WhoAmIResponse whoResponse = (WhoAmIResponse)service.Execute(who);

При отправке WhoAmIRequest я получаю следующее исключение:

The request failed with the error message:
--
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="https://<server>:444/<org>/mscrmservices/2007/CrmService.asmx">here</a>.</h2>
</body></html>

--.

at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
at Microsoft.Crm.SdkTypeProxy.CrmService.Execute(Request Request)
at ForecastConverterWeb.CashflowForecast.ToCrm(HttpContext context)
at ForecastConverterWeb._Default.submitbtn_click(Object sender, EventArgs e)

Похоже, что когда код пытается отправить запрос на https://:444//mscrmservices/2007/CrmService.asmx, страница возвращает ссылку для перенаправления, ну ... сама (https://:444//mscrmservices/2007/CrmService.asmx).

Я попытался использовать внутренний адрес (порт 5555), внешний адрес IFD (https через порт 444) и внутренний адрес IFD (https через порт 444) все с одинаковым результатом. Я знаю, что в CRM 2011 ISV обесценивается, но учитывая количество времени, которое потребуется для повторной разработки этого программного обеспечения (и тот факт, что, учитывая его поддерживаемый код, я не должен был бы) я предпочел бы просто получить это работает как надо (согласно этому: http://msdn.microsoft.com/en-us/library/gg309571.aspx)

Заранее благодарен за любую помощь, которую может предложить каждый.

1 Ответ

3 голосов
/ 15 декабря 2011

Ваш код выглядит так, как будто вы поместили название организации между хостом и путем к /2007/crmservice.asmx.Не делай этого.Я знаю, что вы должны добавлять имя организации, когда оно локально, к пользовательским файлам aspx / asmx в каталоге ISV, но, насколько я когда-либо пытался, это не работает для crmservice.asmx.

...