使用OWIN作為WebAPI的宿主


前言

好吧,也沒什么好說的,就是個技術的總結,直接生成MVC的項目,感覺好重,雖然各種東西很全 ...也許我是處女座? - -,

OWIN呃,這里我就不解釋了,自己也是一知半解,可以參考

Open Web Interface for .NET

我們開始吧...

首先看看結果..

整個WEB項目...很清爽.. - - 我自己是這么覺得的..

 

 

正文開始

首先我們創建一個空的Web項目:

 

創建完成后,里面是什么都沒有的,然后我們添加一個OWIN啟動類如下:

 

在我們的Start UP中編寫代碼如下(解釋我就寫在注釋里了..):

using System;
using System.Threading.Tasks;
using Microsoft.Owin;
using Owin;
using System.Web.Http;

[assembly: OwinStartup(typeof(OWIN_Test.MyStartup))]

namespace OWIN_Test
{
    public class MyStartup
    {
        public void Configuration(IAppBuilder app)
        {
            //創建一個HTTP的實例配置
            HttpConfiguration config = new HttpConfiguration();
            //映射路由
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
            //將配置注入OWIN管道中
            app.UseWebApi(config); 
        }
    }
}

這一步有個重點,那就是app.UseWebApi(config)這個方法會提示找不到,如下圖:

那是因為我們缺少了這個包 Microsoft ASP.NET Web API 2 OWIN Self-Host 

我們打開NuGet控制台..輸入命令:Install-Package Microsoft.AspNet.WebApi.OwinSelfHost

等待下載和安裝完畢即可..效果如下:

 

下面我們編寫一個WebAPI的控制器,代碼如下(代碼很簡單,我就不解釋了):

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

namespace OWIN_Test.Controller
{
    public class ValuesController : ApiController
    {
        [HttpGet]
        public string DoGetTime(string name)
        {
            return name + DateTime.Now.ToString("yyyy-MM-dd");
        }
    }
}

編寫HTML,這里我們采用AJAX訪問.代碼如下:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <script src="JS/jquery/jquery-1.9.1.min.js"></script>
    <script>
        $(function () {
            $("#testbtn").click(function () {
                
                $.get("api/Values/DoGetTime", { name: $("#name").val() }, function (data) {
                    alert(data);

                })


            })
        })
    </script>
</head>
<body>
    <input type="text"  id="name"/>
    <input id="testbtn" type="button"  value="調用WebAPI"/>
</body>
</html>

 

效果如下:

我們得到了我們想要的數據..

 

寫在最后

在Web項目中直接創建webapi的項目其實可以很快的達到效果,..個人不是很喜歡自帶的Webapi模版感覺很蛋疼加了很多用不着的東西,采用OWIN當宿主可以將項目架設在服務,控制台等,當然~你用MVC6甚至..可以跨平台部署~...很方便...文章結束.

不足之處請各位大神多多指點.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM