방금 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)
누구든지 제공 할 수있는 도움에 대해 미리 감사드립니다.
나는 HTTPS'의 URL을 변경 : // : 444/mscrmservices/2007/CrmService.asmx' 그리고 지금은 다음과 같은 예외가 점점 오전 : '요청은 HTTP 상태 401 실패했습니다 : 무단. at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse (SoapClientMessage 메시지, WebResponse 응답, Stream responseStream, Boolean asyncCall) ' –
jacobappleton
해결되었습니다! 내부 주소 (포트 5555의 http)와 함께'https : // : 444/mscrmservices/2007/CrmService.asmx'를 사용했는데 성공했습니다. 감사합니다. –
jacobappleton
도움이 되니 기쁩니다. 나는 실제로 레지스트리를 쿼리하여 서버 URL을 얻는다. HKLM \ Software \ Microsoft \ MSCRM, 값 : ServerUrl. 그러면/MSCRMServices까지 URL이 제공되고 /2007/crmservice.asmx에 방금 appaned됩니다. –