Dynamics CRM中跨域调用Web API 2
生活随笔
收集整理的這篇文章主要介紹了
Dynamics CRM中跨域调用Web API 2
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
關注本人微信和易信公眾號: 微軟動態CRM專家羅勇 ,回復224或者20160611可方便獲取本文,同時可以在第一間得到我發布的最新的博文信息,follow me!我的網站是?www.luoyong.me?。 CRM不是信息孤島,一般需要和其他系統集成,我們有些項目就是自己搭建一個中間層,中間層去調用其他服務,CRM不直接調用其他服務,都是調用中間層的服務。我這里做個Demo,利用Web API 2搭建一個服務,CRM中的Web資源調用這個服務。因為我本人對于Web API不熟悉,以前搭建服務用的是WCF,呵呵。 我還是先按照官方文檔打來搭建一個Web API 2的網站,我這里參考的是 Mike Wasson?的文章 Getting Started with ASP.NET Web API 2 (C#) ,放到了我的一個Azure App Service上,可以訪問的URL是: https://lyapitest.azurewebsites.net/?,如下圖所示,注意我是使用https 的,方便后面的測試。 ? 然后我在Dynamics CRM中新增了一個HTML 類型的Web資源,代碼如下,與前面的代碼沒有多少變化,只是調用的URL變成了絕對URL: <!DOCTYPE html>
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Product App</title><meta charset="utf-8" />
</head>
<body><div><h2>All Products</h2><ul id="products" /></div><div><h2>Search by ID</h2><input type="text" id="prodId" size="5" /><input type="button" value="Search" onclick="find();" /><p id="product" /></div><script type="text/javascript" src="../../common/js/jquery.min.js"></script><script>var uri = 'https://lyapitest.azurewebsites.net/api/products';$(document).ready(function () {// Send an AJAX request
$.getJSON(uri).done(function (data) {// On success, 'data' contains a list of products.
$.each(data, function (key, item) {// Add a list item for the product.
$('<li>', { text: formatItem(item) }).appendTo($('#products'));});}).fail(function (jqXHR, textStatus, err) {$('#product').text('Error: ' + err);});});function formatItem(item) {return item.Name + ': $' + item.Price;}function find() {var id = $('#prodId').val();$.getJSON(uri + '/' + id).done(function (data) {$('#product').text(formatItem(data));}).fail(function (jqXHR, textStatus, err) {$('#product').text('Error: ' + err);});}</script>
</body>
</html>
?
這樣在CRM中出現了一個錯誤,錯誤信息是:XMLHttpRequest cannot load https://lyapitest.azurewebsites.net/api/products. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://demo.luoyong.me' is therefore not allowed access. 在Chrome瀏覽器中如下顯示: 我根據Mike Wasson?的文章 Enabling Cross-Origin Requests in ASP.NET Web API 2 來解決它,原文是英文的,我摘要主要意思做成簡單的操作方法如下: 1. 安裝 Microsoft.AspNet.WebApi.Cors 。我這里用命令行來安裝,點擊 工具 > NuGet包管理器 > 程序包管理器控制臺。 在這個控制臺中輸入命令:Install-Package Microsoft.AspNet.WebApi.Cors ,一會兒就提示安裝成功: 2. 打開項目App_Start 文件夾下的WebApiConfig.cs ,添加如下一行代碼:config.EnableCors(); ,如下圖所示: ? 3.啟用跨域訪問。可以對于全局、控制器或者操作啟用跨域訪問,原文有介紹,我這里使用控制器啟用跨域訪問,打開控制器類文件,添加如下代碼,注意那個origins 是要設置你調用的網站URL,我這里是我的CRM訪問URL,不要在URL的最后加上 / 這個反斜線。 ? 4.重新發布Web API站點,測試結果。發現確實可以訪問到了,解決。轉載于:https://www.cnblogs.com/luoyong0201/p/Dynamics_365_Invoke_Web_API_2_Block_by_CORS_policy.html
總結
以上是生活随笔為你收集整理的Dynamics CRM中跨域调用Web API 2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 转载:如何优雅的实现INotifyPro
- 下一篇: 登录加密的前后端测试