2014-04-02 134 views
0

首先,我們的CRM 2011是內部部署的。然後更改爲IFD(https://myservername.mycompany.com/ORGName/XRMServices/2011/Organization.svc)。當更改爲IFD時,所有OData和JavaScript都不起作用。crm 2011 IFD不能使用OData和Javascript

在內部部署,我們使用的服務器URL ...
VAR lvSz_CRMServerURL = Xrm.Page.Context.getServerUrl(); 它適用於OData和JS。

IFD,我們使用的服務器URL ..

VAR lvSz_CRMODataSvcURLEndpoint = Xrm.Page.context.prependOrgName( 「/XRMServices/2011/OrganizationData.svc」); Odata和JS功能無法正常工作,無法訪問。

當使用prependOrgName和lvObj_XMLDocHnd2.open( 「GET」,lvSz_ODataQueryURL,),lvObj_XMLDocHnd2.readyState是。(應爲4)

當使用prependOrgName和lvObj_XMLDocHnd2.open( 「GET」,lvSz_ODataQueryURL,),lvObj_XMLDocHnd2.readyState是但lvObj_XMLDocHnd2.status是(應該是200)。所以OData和JS停止了,並且沒有通過檢查。

請給我任何建議。什麼是錯誤的可能是配置或JS功能。

請大家看看我的OData和JS功能

.....

function JS_GenerateQuotation() { 
//debugger; 
var opportunityId = Xrm.Page.data.entity.getId(); //Xrm.Page.getAttribute("new_opportunityid").getValue()[0].id; 
var prepareQuotation; 

//var lvSz_CRMServerURL = rootURL + "/GBGroupUAT"; 
//var lvSz_CRMODataSvcURLEndpoint = lvSz_CRMServerURL + "/XRMServices/2011/OrganizationData.svc"; 

var lvSz_CRMODataSvcURLEndpoint = Xrm.Page.context.prependOrgName("/XRMServices/2011/OrganizationData.svc"); 

var lvObj_XMLDocHnd2 = null; 
lvObj_XMLDocHnd2 = new XMLHttpRequest(); 

var relatedEntity = "opportunity"; 
var lvSz_ODataQueryURL = lvSz_CRMODataSvcURLEndpoint + ((relatedEntity == "opportunity") ? "/OpportunitySet?$select=new_PrepareQuotation&$filter=OpportunityId eq guid'" + opportunityId + "'" : ""); 

lvObj_XMLDocHnd2.open("GET", lvSz_ODataQueryURL, false); 
lvObj_XMLDocHnd2.setRequestHeader("Accept", "application/json"); 
lvObj_XMLDocHnd2.setRequestHeader("Content-Type", "application/json; charset=utf-8"); 
var lvArr_CRMRecordsMatchingSpecifiedGUID; 

lvObj_XMLDocHnd2.onreadystatechange = function() { 
    if (lvObj_XMLDocHnd2.readyState == 4) { 
     if (lvObj_XMLDocHnd2.status == 200) { 

      lvArr_CRMRecordsMatchingSpecifiedGUID = eval('(' + lvObj_XMLDocHnd2.responseText + ')'); 

      if (lvArr_CRMRecordsMatchingSpecifiedGUID == null || lvArr_CRMRecordsMatchingSpecifiedGUID == "" || lvArr_CRMRecordsMatchingSpecifiedGUID.d.results[0] == null) { 

      } 
      else { 
       prepareQuotation = lvArr_CRMRecordsMatchingSpecifiedGUID.d.results[0].new_PrepareQuotation; 
      } 
     } 
    } 
} 
lvObj_XMLDocHnd2.send(); 

if (prepareQuotation != false) { 
    var GUIDvalue = Xrm.Page.data.entity.getId(); 

    var serverUrl = urlGenerateQuotation + GUIDvalue; 

    var features = "location=no,menubar=no,status=no,toolbar=no,resizable=1"; 
    window.open(serverUrl, "_blank", features); 
} 
else { 
    alert("Please prepare quotation."); 
} 

}

+0

彙總安裝? –

+0

我可以知道哪些捲起版本?實際上,我們有Infra團隊(硬件),所以我不確定他們是否已經安裝。請讓我知道我們需要安裝哪個彙總。謝謝 – Nightmare

+0

rollup12包含一個名爲getClientUrl的方法http://msdn.microsoft.com/en-us/library/d7d0b052-abca-4f81-9b86-0b9dc5e62a66#BKMK_getClientUrl通常可以修復這類問題 –

回答

0

IFD OData的終點應該是這樣的:https://orgname.domain/XRMServices/2011/OrganizationData.svc

你可以閱讀下的正確網址設置 - >定製 - >開發資源

從UR12起你應該使用Xrm.Page.context.getClientUrl()這superseeds Xrm.Page.context.getServerUrl()以獲取該組織的基本URL。

+0

非常感謝您的幫助。建議,我使用getClientURL()var lvSz_CRMServerURL = Xrm.Page.context.getClientUrl(); var lvSz_CRMODataSvcURLEndpoint = lvSz_CRMServerURL +「/XRMServices/2011/OrganizationData.svc」;但lvObj_XMLDocHnd2.readyState是4,但lvObj_XMLDocHnd2.status是404(應該是200)。我也檢查CRM服務器彙總版本是彙總16.請給我任何建議來解決這個問題。 – Nightmare

+0

大家好,現在我發現了一個不同的。當我使用Xrm.Page.context.getClientUrl()時,網址是「http://bn.aa.com.sg/Group」(在更改爲IFD之前,這是相同的內部網址鏈接)。當我使用Xrm.Page.context.getServerUrl()時,URL是「https://crmuat.aa.com/Group」。當我檢查開發者資源時,URL是「https://crmuat.aa.com/Group」,與getServerUrl()相同。我也混淆瞭如何使用OData和JS(注意url是保密的示例鏈接)。謝謝。 – Nightmare

+0

IFD網址不應該像「域/組織」(即與之前的IFD設置相同),我強烈懷疑IFD/ADFS配置中的某些內容已關閉(我不熟悉涉及的步驟,但我會離開向具有更深入專業知識的人解決這個問題......) – Alex