2011-12-15 3 views
3

Мы только что обновили Microsoft Dynamics CRM 4 до Microsoft Dynamics CRM 2011. Большая часть обновления прошла гладко, однако у меня есть собственный код (написанный для CRM 4), который был реализован как страница ASPX в папке ISV CRM 4. Этот код перестает работать с момента обновления.Подключиться к mscrmservices/2007/Конечная точка CrmService.asmx в CRM 2011 IFD/ADFS

Наш сервер Dynamics CRM 2011 настроен на помещение, как развертывание 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 over port 444) адрес с одинаковым результатом. Я знаю, что в CRM 2011 ISV обесценивается, но учитывая количество времени, которое потребуется на повторное развитие этого программного обеспечения (и тот факт, что, учитывая его поддерживаемый код, мне не нужно), я бы скорее просто получил это работает как должно (в соответствии с этим: http://msdn.microsoft.com/en-us/library/gg309571.aspx)

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

ответ

3

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

+0

Я изменил URL для 'https: // : 444/MSCRMServices/2007/CrmService.asmx' и теперь я получаю следующее исключение: ' Сбой запроса с состоянием HTTP 401: Несанкционированный. в System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse (сообщение SoapClientMessage, ответ WebResponse, поток responseStream, Boolean asyncCall) ' – jacobappleton

+0

Это исправлено! Я использовал 'https: // : 444/mscrmservices/2007/CrmService.asmx' с внутренним адресом (http на порту 5555), и он сработал. Спасибо! – jacobappleton

+0

Рад, что это помогло. Я на самом деле всегда запрашиваю реестр, чтобы получить URL-адрес сервера. HKLM \ Software \ Microsoft \ MSCRM, значение: ServerUrl. Это даст вам URL-адрес до/MSCRMServices, а затем вы просто установите ваш /2007/crmservice.asmx. –