Dynamics 365中JS调用Azure Logic App提示URI无效错误如何解决
错误原因
你遇到的0x8006088a报错本质是XrmQuery.sendRequest()方法的设计限制导致的:
该方法默认用于调用Dynamics 365原生Web API,会自动在传入的URL前拼接当前Dynamics组织的根域名 + Web API前缀(也就是错误信息里提到的https://ORGANIZATION_XY.crm4.dynamics.com/api/data/v8.0/)。你传入的是完整的Azure Logic App外网地址,被自动拼接后就变成了错误信息里的无效URI,才会触发校验失败。
Postman调用正常是因为直接使用了完整的Logic App地址,没有被额外拼接前缀。
解决方案
- 方案1:改用原生JS请求方法调用外部地址
直接用fetch或者XMLHttpRequest发起请求,不会自动拼接Dynamics域名前缀,示例代码如下:
fetch(logicAppUrl, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(queryPayload) }) .then(res => res.json()) .then(result => { showAlertDialog("blabla"); }) .catch(error => { console.log("Error", error); showAlertDialog("blablabla" + error); });
- 方案2:使用XrmQuery提供的外部请求方法
部分版本的XrmQuery提供了专门调用外部地址的sendExternalRequest方法,该方法不会自动拼接Dynamics域名前缀,直接替换原方法即可。 - 方案3:配置Logic App跨域权限
调用前需要先在Azure Portal中找到对应Logic App,在CORS配置项中添加你的Dynamics 365组织域名,允许跨域请求,否则即便修改了请求方法也会被浏览器跨域策略拦截。
内容的提问来源于stack exchange,提问作者Paul Richardson
相关产品推荐
相关产品推荐

