Dynamics crm 连接到CRM 2011 IFD/ADFS中的mscrmservices/2007/CrmService.asmx端点

Dynamics crm 连接到CRM 2011 IFD/ADFS中的mscrmservices/2007/CrmService.asmx端点,dynamics-crm,dynamics-crm-2011,dynamics-crm-4,crm,Dynamics Crm,Dynamics Crm 2011,Dynamics Crm 4,Crm,我们刚刚从Microsoft Dynamics CRM 4升级到Microsoft Dynamics CRM 2011。大部分升级都进行得很顺利,但是我有一些自定义代码(为CRM 4编写),这些代码在CRM 4 ISV文件夹中作为ASPX页面实现。升级后,此代码已停止工作 我们的Dynamics CRM 2011服务器是作为IFD部署在本地设置的 代码连接到CRM服务器,如下所示: using (new CrmImpersonator()) { str

我们刚刚从Microsoft Dynamics CRM 4升级到Microsoft Dynamics CRM 2011。大部分升级都进行得很顺利,但是我有一些自定义代码(为CRM 4编写),这些代码在CRM 4 ISV文件夹中作为ASPX页面实现。升级后,此代码已停止工作

我们的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);
使用(新的CrmImpersonator())
{
string crmurl=“https://:444//mscrmservices/2007/CrmService.asmx”;
字符串orgname=;
CrmAuthenticationToken=CrmAuthenticationToken.ExtractCrmAuthenticationToken(上下文,组织名称);
token.OrganizationName=组织名称;
token.AuthenticationType=0;
CrmService service=新的CrmService();
service.Credentials=System.Net.CredentialCache.DefaultCredentials;
service.CrmAuthenticationTokenValue=令牌;
Url=crmurl;
WhoAmIRequest who=新WhoAmIRequest();
WhoAmIResponse=(WhoAmIResponse)service.Execute(who);
发送请求后,我收到以下异常:

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)
请求失败,并显示错误消息:
--
移动的对象
对象移动到。
--.
位于System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage消息、WebResponse响应、Stream responseStream、Boolean异步调用)
位于System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName,Object[]参数)
在Microsoft.Crm.SdkTypeProxy.CrmService.Execute(请求)
在ForecastConverterWeb.CashflowForecast.ToCrm(HttpContext上下文)
在ForecastConverterWeb.\u默认值。submitbtn\u单击(对象发送方,事件参数e)
似乎当代码试图将请求发送到https://:444//mscrmservices/2007/CrmService.asmx时,页面返回一个链接,以重定向到……本身(https://:444//mscrmservices/2007/CrmService.asmx)

我尝试使用内部地址(端口5555)、外部IFD地址(端口444上的https)和内部IFD地址(端口444上的https)都得到了相同的结果。我知道,在CRM 2011中,ISV正在贬值,但考虑到重新开发此软件所需的时间(事实上,考虑到它是受支持的代码,我不应该这样做)我宁愿让它按它应该的方式工作(根据这个:)


我提前感谢任何人能够提供的帮助。

您的代码使它看起来像是您将组织名称放在主机和/2007/crmservice.asmx路径之间。不要这样做。我知道在ISV目录中定制aspx/asmx文件时,您必须在组织名称之前加上前缀,但就我所做过的尝试而言,它是这样做的sn不适用于crmservice.asmx。

我将URL更改为
https://:444/mscrmservices/2007/crmservice.asmx
,现在我收到以下异常:
请求失败,HTTP状态为401:Unauthorized.at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage消息、WebResponse响应、Stream responseStream、Boolean asyncCall)
修复了它!我使用了内部地址(端口5555上的http)的
https://:444/mscrmservices/2007/CrmService.asmx
它成功了。谢谢!很高兴它起到了作用。实际上,我总是查询注册表以获取服务器URL。HKLM\Software\Microsoft\MSCRM,value:ServerUrl。这将为您提供指向/MSCRMServices的URL,然后您刚刚安装了/2007/crmservice.asmx。