2011-12-15 2 views
3

방금 ​​Microsoft Dynamics CRM 4에서 Microsoft Dynamics CRM 2011로 업그레이드했습니다. 대부분의 업그레이드가 원활하게 진행되었지만 일부 사용자 지정 코드가 작성되었습니다 CRM 4)는 CRM 4 ISV 폴더에서 ASPX 페이지로 구현되었습니다. 이 코드는 업그레이드 이후 작동을 멈췄습니다.CRM 2011의 mscrmservices/2007/CrmService.asmx 끝점 IFD/ADFS

Dynamics CRM 2011 서버는 전제 조건으로 IFD 배포로 설정됩니다.

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 전송시 : 다음과 같이

코드는 CRM 서버에 연결

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 주소 (포트 444를 통한 https) 및 내부 IFD (포트 444의 https) 주소를 사용해 보았습니다. 나는 CRM 2011 ISV가 가치 저하되고 있다는 것을 알고 있지만,이 소프트웨어를 재개발하는 데 걸리는 시간을 고려하면 (그리고 지원되는 코드를 고려할 때, 그렇게해서는 안됨) 차라리 얻는 편이 낫다. 이 작업을해야합니다 (이 : http://msdn.microsoft.com/en-us/library/gg309571.aspx)

누구든지 제공 할 수있는 도움에 대해 미리 감사드립니다.

답변

3

코드를 사용하면 호스트 이름과 /2007/crmservice.asmx 경로 사이에 조직 이름을 넣는 것처럼 보입니다. 그러지 마. ISV 디렉토리에서 사용자 정의 aspx/asmx 파일에 대해 사내 구축시 조직 이름을 앞에 붙여야한다는 것을 알고 있습니다. 그러나 지금까지 시도한 것처럼 crmservice.asmx에서는 작동하지 않습니다.

+0

나는 HTTPS'의 URL을 변경 : // : 444/mscrmservices/2007/CrmService.asmx' 그리고 지금은 다음과 같은 예외가 점점 오전 : '요청은 HTTP 상태 401 실패했습니다 : 무단. at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse (SoapClientMessage 메시지, WebResponse 응답, Stream responseStream, Boolean asyncCall) ' – jacobappleton

+0

해결되었습니다! 내부 주소 (포트 5555의 http)와 함께'https : // : 444/mscrmservices/2007/CrmService.asmx'를 사용했는데 성공했습니다. 감사합니다. – jacobappleton

+0

도움이 되니 기쁩니다. 나는 실제로 레지스트리를 쿼리하여 서버 URL을 얻는다. HKLM \ Software \ Microsoft \ MSCRM, 값 : ServerUrl. 그러면/MSCRMServices까지 URL이 제공되고 /2007/crmservice.asmx에 방금 appaned됩니다. –

관련 문제