婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 支持Ajax跨域訪問ASP.NET Web Api 2(Cors)的示例教程

支持Ajax跨域訪問ASP.NET Web Api 2(Cors)的示例教程

熱門標簽:地圖標注的公司有哪些 地圖標注專業(yè)團隊 塔城代理外呼系統(tǒng) 代理接電話機器人如何取消 遂寧市地圖標注app 地圖定位圖標標注 濮陽外呼電銷系統(tǒng)怎么樣 400電話辦理哪家性價比高 天心智能電銷機器人

隨著深入使用ASP.NET Web Api,我們可能會在項目中考慮將前端的業(yè)務分得更細。比如前端項目使用Angularjs的框架來做UI,而數(shù)據(jù)則由另一個Web Api 的網(wǎng)站項目來支撐。注意,這里是兩個Web網(wǎng)站項目了,前端項目主要負責界面的呈現(xiàn)和一些前端的相應業(yè)務邏輯處理,而Web Api則負責提供數(shù)據(jù)。

這樣問題就來了,如果前端通過ajax訪問Web Api項目話,就涉及到跨域了。我們知道,如果直接訪問,正常情況下Web Api是不允許這樣做的,這涉及到安全問題。所以,今天我們這篇文章的主題就是討論演示如何配置Web Api以讓其支持跨域訪問(Cors)。好了,下面我們以一個簡單的示例直接進入本文的主題。

首先打開Visual Studio 2013,創(chuàng)建一個空白的解決方案,命名為:CrossDomainAccessWebAPI。

再創(chuàng)建一個空的Web Api項目,命名為:CrossDomainAccess.WebAPI

接著我們右鍵單擊剛才創(chuàng)建的解決方案,創(chuàng)建一個空的Web項目用來模擬我們的網(wǎng)站對WebAPI項目進行跨域調(diào)用,如下:

完成以上步驟以后,我們的解決方案目錄如下圖所示:

下面我們在模擬網(wǎng)站的Web項目中通過Nuget添加jQuery,一下是添加jQuery包的界面:

添加完成后,到這里我們就完成了前期的準備工作。下面在WebAPI項目的Models文件夾中添加是一個實體類UserInfo,具體代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace CrossDomainAccess.WebAPI.Models
{
 public class UserInfo
 {
  public int Id { get; set; }

  public string UserName { get; set; }

  public string UserPass { get; set; }

  public string Email { get; set; }

  public DateTime RegTime { get; set; }
 }
}

然后在WebAPI項目中添加一個示例控制器:UserInfoController,這個控制器用來返回數(shù)據(jù)集合,具體代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using CrossDomainAccess.WebAPI.Models;

namespace CrossDomainAccess.WebAPI.Controllers
{
 public class UserInfoController : ApiController
 {
  /// summary>
  /// 獲取用戶信息集合的方法
  /// /summary>
  /// returns>返回用戶信息集合/returns>
  public IHttpActionResult GetList()
  {
   //對象集合模擬數(shù)據(jù)
   ListUserInfo> list = new ListUserInfo>()
   {
    new UserInfo()
    {
     Id = 1,
     UserName = "張三",
     UserPass = "FDASDFAS",
     Email = "zhangsan@163.com",
     RegTime = DateTime.Now
    },
    new UserInfo()
    {
     Id = 2,
     UserName = "李四",
     UserPass = "FDASDFAS",
     Email = "lisi@163.com",
     RegTime = DateTime.Now
    },
    new UserInfo()
    {
     Id = 3,
     UserName = "王五",
     UserPass = "FDASDFAS",
     Email = "wangwu@163.com",
     RegTime = DateTime.Now
    },
    new UserInfo()
    {
     Id = 4,
     UserName = "趙六",
     UserPass = "FDASDFAS",
     Email = "zhaoliu@163.com",
     RegTime = DateTime.Now
    },
    new UserInfo()
    {
     Id = 5,
     UserName = "田七",
     UserPass = "FDASDFAS",
     Email = "tianqi@163.com",
     RegTime = DateTime.Now
    },
    new UserInfo()
    {
     Id = 6,
     UserName = "王八",
     UserPass = "FDASDFAS",
     Email = "wangba@163.com",
     RegTime = DateTime.Now
    }
   };
   return Ok(list);
  }
 }
}

接著我們需要修改一下App_Start目錄下的WebApiConfig.cs文件中webapi的路由規(guī)則,以便通過api/{controller}/{action}的方式進行訪問,同時讓修改序列化方式,讓WebAPI默認輸出json格式的數(shù)據(jù),具體操作如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http.Formatting;
using System.Web.Http;

namespace CrossDomainAccess.WebAPI
{
 public static class WebApiConfig
 {
  public static void Register(HttpConfiguration config)
  {
   // Web API 配置和服務

   // Web API 路由
   config.MapHttpAttributeRoutes();

   config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{action}/{id}",
    defaults: new { id = RouteParameter.Optional }
   );
   //清除所有序列化格式
   config.Formatters.Clear();
   //添加Json格式的序列化器
   config.Formatters.Add(new JsonMediaTypeFormatter());
  }
 }
}

重新生成一下項目,并在瀏覽器中訪問,這時我們可以的到json格式的數(shù)據(jù),如下:

復制代碼 代碼如下:
[{"Id":1,"UserName":"張三","UserPass":"FDASDFAS","Email":"zhangsan@163.com","RegTime":"2016-04-21T10:36:50.7800569+08:00"},{"Id":2,"UserName":"李四","UserPass":"FDASDFAS","Email":"lisi@163.com","RegTime":"2016-04-21T10:36:50.7800569+08:00"},{"Id":3,"UserName":"王五","UserPass":"FDASDFAS","Email":"wangwu@163.com","RegTime":"2016-04-21T10:36:50.7800569+08:00"},{"Id":4,"UserName":"趙六","UserPass":"FDASDFAS","Email":"zhaoliu@163.com","RegTime":"2016-04-21T10:36:50.7800569+08:00"},{"Id":5,"UserName":"田七","UserPass":"FDASDFAS","Email":"tianqi@163.com","RegTime":"2016-04-21T10:36:50.7800569+08:00"},{"Id":6,"UserName":"王八","UserPass":"FDASDFAS","Email":"wangba@163.com","RegTime":"2016-04-21T10:36:50.7800569+08:00"}]

好了,到這里我們Web Api端的數(shù)據(jù)輸出就準備好了。為了測試是否可以跨域訪問,我們再轉(zhuǎn)到CorsDemo.UI網(wǎng)站項目中。首先創(chuàng)建一個index.aspx頁面(這個命名自己可以任意取)后打開,修改成如下的代碼:

%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="CrossDomainAccess.Web.Index" %>

!DOCTYPE html>

html xmlns="http://www.w3.org/1999/xhtml">
head runat="server">
 meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 title>/title>
 script src="Scripts/jquery-2.2.3.min.js">/script>
 script type="text/javascript">
  $(function () {
   $('#getData').click(function () {
    $.ajax({
     url: 'http://localhost:29867/api/UserInfo/getlist',
     dataType: 'json',
     success: function (data) {
      //以表格的形式在瀏覽器控制臺顯示數(shù)據(jù),IE下不支持
      console.table(data);
     }
    });
   });
  });
 /script>
/head>
body>
 form id="form1" runat="server">
  div>
   input type="button" value="跨域獲取數(shù)據(jù)" id="getData" />
  /div>
 /form>
/body>
/html>

完成以上步驟以后,啟動WebAPI項目和Web項目,并在Web項目的Index頁面中點擊跨域獲取數(shù)據(jù)按鈕,打開瀏覽器控制臺查看請求結果,在控制臺會出現(xiàn)如下結果:

控制臺提示我們跨域請求被阻止,同時提示CORS頭部信息確實,所以我們可以通過去WebAPI配置CORS來讓其支持跨域訪問。

那現(xiàn)在我們在WebAPI項目中通過Nuget添加Microsoft.AspNet.WebApi.Cors ,然后在WebApiConfig.cs文件中配置HttpConfiguration的EnableCors方法即可。具體操作如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http.Formatting;
using System.Web.Http;
using System.Web.Http.Cors;

namespace CrossDomainAccess.WebAPI
{
 public static class WebApiConfig
 {
  public static void Register(HttpConfiguration config)
  {
   // Web API 配置和服務
   EnableCrossSiteRequests(config);
   // Web API 路由
   config.MapHttpAttributeRoutes();

   config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{action}/{id}",
    defaults: new { id = RouteParameter.Optional }
   );
   //清除所有序列化格式
   config.Formatters.Clear();
   //添加Json格式的序列化器
   config.Formatters.Add(new JsonMediaTypeFormatter());
  }

  /// summary>
  /// 允許跨域調(diào)用
  /// /summary>
  /// param name="config">/param>
  private static void EnableCrossSiteRequests(HttpConfiguration config)
  {
   //對所有的請求來源沒有任何限制
   var cors = new EnableCorsAttribute(
    origins: "*",
    headers: "*",
    methods: "*"
    );
   config.EnableCors(cors);
  }
 }
}

現(xiàn)在,我們再重新生成WebAPI項目并運行,接著在頁面http://localhost:31521/Index.aspx中點擊按鈕“跨域獲取數(shù)據(jù)”,通過firebug的控制臺,我們可以看到數(shù)據(jù)跨域加載成功了,如下:

更多精彩內(nèi)容,請點擊《ajax跨域技術匯總》,進行深入學習和研究。

至此,關于ASP.Net Web Api支持跨域請求的示例和演示就完成了,謝謝大家的閱讀。

您可能感興趣的文章:
  • 創(chuàng)建一個完整的ASP.NET Web API項目
  • ASP.NET中Web API的簡單實例
  • ASP.NET MVC Web API HttpClient簡介
  • ASP.NET Web Api 2實現(xiàn)多文件打包并下載文件的實例
  • ASP.NET Web API教程 創(chuàng)建Admin視圖詳細介紹
  • ASP.NET Web API如何將注釋自動生成幫助文檔
  • ASP.NET Web API教程 創(chuàng)建Admin控制器實例分享
  • ASP.NET Web API教程 創(chuàng)建域模型的方法詳細介紹
  • .Net Web Api中利用FluentValidate進行參數(shù)驗證的方法

標簽:吉林 麗江 汕頭 重慶 河南 本溪 婁底 宜春

巨人網(wǎng)絡通訊聲明:本文標題《支持Ajax跨域訪問ASP.NET Web Api 2(Cors)的示例教程》,本文關鍵詞  支持,Ajax,跨域,訪問,ASP.NET,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《支持Ajax跨域訪問ASP.NET Web Api 2(Cors)的示例教程》相關的同類信息!
  • 本頁收集關于支持Ajax跨域訪問ASP.NET Web Api 2(Cors)的示例教程的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    五月天久久比比资源色| 日本午夜精品一区二区三区电影| 99riav久久精品riav| 成人av集中营| 国产精品毛片无遮挡高清| 亚洲国产精品人人做人人爽| 日本二三区不卡| 国产日产精品一区| 蜜桃精品视频在线| 精品国产91九色蝌蚪| 亚洲成人一区二区在线观看| va亚洲va日韩不卡在线观看| 欧美激情艳妇裸体舞| 91麻豆免费看片| 五月婷婷综合网| 精品成人一区二区三区| 高清视频一区二区| 亚洲123区在线观看| 久久婷婷综合激情| 色婷婷亚洲综合| 国产在线麻豆精品观看| 亚洲免费观看视频| 欧美国产日韩一二三区| 欧美性色黄大片| 国产不卡在线一区| 成人午夜在线播放| 欧美日本在线看| 91精品欧美久久久久久动漫| 亚洲成av人片| 91.麻豆视频| 久久99久久精品| 麻豆视频一区二区| 99精品国产99久久久久久白柏| 91麻豆精品久久久久蜜臀| 九一久久久久久| 精品处破学生在线二十三| av不卡一区二区三区| 亚洲成a人片在线观看中文| 国产日韩精品久久久| 欧美日本不卡视频| 国产aⅴ综合色| 天堂一区二区在线| 久久精品亚洲麻豆av一区二区 | 日产精品久久久久久久性色| 欧美在线一区二区三区| 精品一区二区精品| 夜夜嗨av一区二区三区 | 99久久99精品久久久久久| 天堂在线一区二区| 奇米精品一区二区三区在线观看一 | 日韩免费观看高清完整版| 欧美丝袜第三区| 制服.丝袜.亚洲.中文.综合| 欧美电影在哪看比较好| 欧美色综合网站| 日韩欧美国产三级电影视频| 精品国产免费久久| 综合婷婷亚洲小说| 综合av第一页| 美国av一区二区| 在线免费观看一区| 国产精品黄色在线观看| 首页欧美精品中文字幕| 国产精品18久久久| 欧美日韩激情一区二区三区| 日韩三级视频在线看| 亚洲日本在线天堂| 美腿丝袜亚洲色图| 91激情五月电影| 欧美国产欧美综合| 91啪九色porn原创视频在线观看| 久久久久久久综合| 日本道精品一区二区三区| 久久精品一区二区| 9191精品国产综合久久久久久| 国产亚洲精品bt天堂精选| 极品销魂美女一区二区三区| 亚洲图片一区二区| 99久久国产综合精品女不卡| 国产91综合网| 日韩精品一级中文字幕精品视频免费观看| 国产一区三区三区| 久久亚洲综合色| 在线影院国内精品| 国产毛片精品视频| 一区二区三区日本| 欧美一区二区大片| 色综合中文综合网| 日韩一区二区不卡| 日韩亚洲欧美成人一区| 久久成人av少妇免费| 久久99国产精品免费网站| 国产亚洲一本大道中文在线| 日本电影欧美片| 99re这里只有精品视频首页| 日韩精品中文字幕在线不卡尤物 | 国产成人精品免费视频网站| 国产乱色国产精品免费视频| 一区二区三区视频在线观看| 中文字幕亚洲一区二区av在线 | 成人天堂资源www在线| 欧美激情在线看| 欧美亚男人的天堂| 日韩精品专区在线| 中文字幕欧美区| 亚洲欧美一区二区在线观看| 午夜精品久久久| 国产亚洲欧美日韩俺去了| 亚洲一区二区三区爽爽爽爽爽| 国产精品综合二区| 日本不卡的三区四区五区| 国产精品视频一二三区| 亚洲国产婷婷综合在线精品| 国产欧美日韩精品a在线观看| 成人福利在线看| 99riav久久精品riav| 欧美日产国产精品| 日韩欧美一区二区三区在线| 天天综合色天天综合色h| 麻豆91小视频| 国产高清不卡二三区| 国产毛片精品一区| 成人高清视频免费观看| 欧美日韩激情一区二区三区| 久久亚洲精品国产精品紫薇| 欧美成人精品1314www| 国产精品久久久久7777按摩| 一区二区三区丝袜| 国产精品一区二区x88av| 欧美伦理电影网| 亚洲丝袜制服诱惑| 国产高清在线观看免费不卡| 欧美日韩国产综合一区二区三区| 337p日本欧洲亚洲大胆精品| 大胆欧美人体老妇| 欧美一级精品在线| 1000精品久久久久久久久| 中文字幕 久热精品 视频在线| 亚洲午夜一区二区| 国产成a人无v码亚洲福利| 欧美一级在线观看| 日本不卡视频一二三区| 欧美系列在线观看| 日韩一区中文字幕| 成人午夜又粗又硬又大| 日韩女优av电影在线观看| 亚洲一级二级三级在线免费观看| 国产精品久久久久永久免费观看 | 欧美一区二区三区在线| 一区二区三区中文在线观看| 国产精品一级黄| 日韩一区二区在线看| 亚洲美女在线国产| 欧美激情一二三区| 看电影不卡的网站| 精品视频在线视频| 国产精品久久久久久久岛一牛影视| 日韩高清不卡一区二区| 91国在线观看| 亚洲第一福利一区| 色综合色综合色综合色综合色综合 | 91原创在线视频| 国产欧美日韩在线| 日韩av在线发布| 日韩一区二区三| 久久99精品久久久久久久久久久久 | 日韩和欧美一区二区| 91九色最新地址| 亚洲国产视频一区二区| 欧美一区二区在线免费播放| 麻豆91在线播放免费| 国产精品免费久久久久| a4yy欧美一区二区三区| 亚洲一区二区三区精品在线| 欧美一区二区三区免费大片 | 亚洲综合成人在线视频| 欧美少妇bbb| 狠狠色伊人亚洲综合成人| 久久亚洲综合色一区二区三区 | 91色九色蝌蚪| 亚洲一级二级在线| 久久夜色精品国产欧美乱极品| a级精品国产片在线观看| 亚洲成人资源网| 欧美激情一区不卡| 欧美裸体bbwbbwbbw| 成年人午夜久久久| 五月综合激情日本mⅴ| 中文天堂在线一区| 欧美高清视频在线高清观看mv色露露十八 | 日本vs亚洲vs韩国一区三区二区| 欧美电影免费观看高清完整版在线 | 在线一区二区三区四区五区| 一区二区在线看| 久久久久久久久一| 欧美日韩成人在线| 波多野结衣91| 老司机精品视频导航| 亚洲精品免费视频| 2020日本不卡一区二区视频|