• 跨域调用WebApi


    1. WebApi 和WebConfig 设置

    using Libaray.DAL.Services;
    using Libaray.Models.Entities;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Net.Http;
    using System.Web.Http;
    
    namespace Libaray.WebApi.Controllers
    {
        /// <summary>
        /// 图书信息
        /// </summary>
        public class BookController : ApiController
        {
            BookService BookDAL = new BookService();
    
            /// <summary>
            /// 查询所有图书信息
            /// </summary>
            /// <returns></returns>
            public IQueryable<BookModel> Get()
            {
                return BookDAL.FindList<BookModel>().AsQueryable();
            }
    
            /// <summary>
            /// 查询制定Id的图书信息
            /// </summary>
            /// <param name="id">图书Id</param>
            /// <returns>查询到的图书信息</returns>
            public BookModel Get(string id)
            {
                Guid BookId = Guid.Parse(id);
                return BookDAL.Find(u => u.BookId == BookId);
               
            }
        }
    }
     <system.webServer>
        <handlers>
          <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
          <remove name="OPTIONSVerbHandler" />
          <remove name="TRACEVerbHandler" />
          <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
        </handlers>
        <validation validateIntegratedModeConfiguration="false" />
        <modules>
          <remove name="ApplicationInsightsWebTracking" />
          <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler" />
        </modules>
        <httpProtocol>  <!-- 重点开始 -->
        <customHeaders>
          <add name="Access-Control-Allow-Origin" value="*" />
          <add name="Access-Control-Max-Age" value="30"/>
          <add name="Access-Control-Allow-Methods" value="GET,POST,OPTIONS"/>
          <add name="Access-Control-Allow-Headers" value="Content-Type, Accept" />
        </customHeaders>
      </httpProtocol>  <!-- 重点结束 -->
      </system.webServer>

    2. MVC 客户端

    @{
        ViewBag.Title = "FindBook";
        Layout = "~/Views/Shared/_Layout.cshtml";
    }
    
    <h2>FindBook</h2>
    
    <div class="row" style="margin-top:20px;">
        <div class="col-sm-2">
            @Html.Partial("_AccountNavigator")
        </div>
        <div class="col-sm-10">
            <form id="form" action="/Book/FindBook" method="get">
                <div class="form-horizontal">
                    <div class="form-group">
                        <label class="col-sm-1 control-label">图书Id</label>
                        <div class="col-sm-2">
                            @Html.TextBox("BookId", "", new { @class= "form-control input-sm" })
                            <input type="text" id="test" name="test" />
                        </div>
                        <input type="submit" value="查找" class="btn btn-sm btn-default" />
                    </div>
                </div>
            </form>
            <div class="table-responsive">
                <table class="table table-striped table-hover">
                    <thead>
                        <tr>
                            <td>BookId</td>
                            <td>Book Name</td>
                            <td>Author</td>
                        </tr>
                    </thead>
                    <tbody id="tb"></tbody>
                </table>
            </div>
        </div>
    </div>
    <script type="text/javascript">
        $(function () {
            $.getJSON("http://localhost:50159/api/book", function (data) {
                $.each(data, function (key, item) {
                    $("#tb").append("<tr><td>" + item.BookId + "</td><td>" + item.BookName + "</td>" + "<td>" + item.Author + "</td></tr>");
                });
            });
        })
    </script>
     

    Controller 

      [HttpGet]
            public async Task<ActionResult> FindBook(string BookId)
            {
                if(!string.IsNullOrEmpty(BookId))
                {
                    string url = "http://localhost:50159/api/book/";
                    var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip };
                    using (var http = new HttpClient(handler))
                    {
                        var data = await http.GetAsync(url);
    
                        var content = data.Content.ReadAsStringAsync();
    
                        return View(data);
                    }
                }
                return View();
            }
  • 相关阅读:
    根据两个判断条件,加载数据库列表getList(state, receiveUserId);
    listview带着chackbox,判断是否选择
    前台ajax不能循环执行,需要向后台传值,后台循环 id in (1,2,3);
    前台交互,根据id、关键字查询、插入新数据到数据库
    synchronized(XXX.class)
    接口测试思路和方法
    概念——同步异步;回调、轮询;序列化
    用例设计三个方面
    jenkins-git-gradle配置项目
    jmeter_https
  • 原文地址:https://www.cnblogs.com/VirtualMJ/p/5182877.html
Copyright © 2020-2023  润新知