我們剛剛從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部署在本地設置。
代碼連接到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該頁面會返回一個鏈接重定向到,well ...本身(https://:444 // mscrmservices/2007/CrmService.asmx)。
我一直使用內部地址(端口5555),外部IFD地址試圖(HTTPS通過端口444)和內部IFD(HTTPS通過端口444)處理所有具有相同的結果。我知道,在2011年CRM ISV正在貶值,但時間的考慮量則需重新開發這個軟件(而事實上,考慮到它支持的代碼,我應該沒有)我寧願只得到這工作,因爲它應該(根據這個:http://msdn.microsoft.com/en-us/library/gg309571.aspx)
我非常感謝任何人都可以提供幫助。
我改變了URL爲`的https://:444/mscrmservices/2007/CrmService.asmx`,現在我收到以下異常: `請求,HTTP狀態401失敗:未經授權。 at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message,WebResponse response,Stream responseStream,Boolean asyncCall)` –
jacobappleton
2011-12-15 23:14:42