使用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甚至..可以跨平台部署~...很方便...文章结束.

不足之处请各位大神多多指点.

时间: 2024-11-13 08:00:10

使用OWIN作为WebAPI的宿主的相关文章

OWIN 为WebAPI

OWIN 为WebAPI 宿主 跨平台 OWIN是什么? OWIN的英文全称是Open Web Interface for .NET. 如果仅从名称上解析,可以得出这样的信息:OWIN是针对.NET平台的开放Web接口. 那Web接口是谁和谁之间的接口呢?是Web应用程序与Web服务器之间的接口,OWIN就是.NET Web应用程序与Web服务器之间的接口. 为什么需要这样一个接口呢?因为.NET Web应用程序是运行于Web服务器之中的,.NET Web应用程序需要通过Web服务器接收用户的请

使用OWIN 为WebAPI 宿主 跨平台

OWIN是什么? OWIN的英文全称是Open Web Interface for .NET. 如果仅从名称上解析,可以得出这样的信息:OWIN是针对.NET平台的开放Web接口. 那Web接口是谁和谁之间的接口呢?是Web应用程序与Web服务器之间的接口,OWIN就是.NET Web应用程序与Web服务器之间的接口. 为什么需要这样一个接口呢?因为.NET Web应用程序是运行于Web服务器之中的,.NET Web应用程序需要通过Web服务器接收用户的请求,并且通过Web服务器将响应内容发送用

控制台+Owin搭建WebAPI接口服务

当没有iis环境.想快速启动几个api接口测试又觉得新建一个api项目麻烦?来使用控制台做宿主,快速改几个api测试吧! 1.新建控制台项目 2.安装以下相关依赖 Microsoft.AspNet.WebApi Microsoft.AspNet.WebApi.Owin Microsoft.Owin.Hosting Microsoft.Owin.Host.HttpListener 3.新建API控制器,需要注意一下几点约定 >控制器放在文件夹Controllers下(没有新建一个) >控制器继承

Visual Studio 2015 Owin+MVC+WebAPI+ODataV4+Identity+Oauth2.0+AngularJS 1.x 学习笔记

2016年,.net 会有很多大更新 ASP.NET 5 在此之前我都是用着古老的.net做开发的 (WebForm + IIS) 为了接下来应对 .net 的新功能,我特地去学习了一下基本的 MVC Owin 等等. 接下来我会针对主题写一些学习笔记. MVC & Owin setup step 1.New empty project and add folders and code references for "MVC". 2.Install "Microsof

Visual Studio 2015 Owin+MVC+WebAPI+ODataV4+EntityFrawork+Identity+Oauth2.0+AngularJS 1.x 学习笔记之&quot;坑&quot;

1.AngularJS route 与 MVC route http://www.cnblogs.com/usea/p/4211989.html public class SingleRoute : RouteBase { public override RouteData GetRouteData(HttpContextBase httpContext) { var data = new RouteData(this, new MvcRouteHandler()); data.Values.A

使用OWIN 构建自宿主ASP.NET Web API 2

--Use OWIN to Self-Host ASP.NET Web API 2 原文链接:http://www.asp.net/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api 摘要:ASP.NET Web API 2拥有符合RESTFUL风格,原生支持HTML协议,解耦IIS和windows server服务器等诸多优秀特性.本文讲述如何使用OWIN构建ASP.NET Web API 2.在翻译的基础

ASP.NET Linux部署(2) - MS Owin + WebApi + Mono + Jexus

原文:ASP.NET Linux部署(2) - MS Owin + WebApi + Mono + Jexus ASP.NET Linux部署(2) - MS Owin + WebApi + Mono + Jexus 本文承接我的上一篇博文: ASP.NET 5 Linux部署,那篇文章主要是针对最新的ASP.NET 5的,但在随后的研究中,我对这种娱乐型的部署依然不是非常满意,当然其主要原因是因为ASP.NET 5 依然处于RC版本,并不十分成熟. 但可以预见到的是,就算本月ASP.NET 5

如何改写WebApi部分默认规则

为什么要改 最近公司在推广SOA框架,第一次正经接触这种技术(之前也有但还是忽略掉吧),感觉挺好,就想自己也折腾一下,实现一个简单的SOA框架 用过mvc进行开发,印象之中WebApi和Mvc好像是一样的,带着这样的预设开始玩WebApi,然后被虐得找不到着北. 被虐的原因,是Mvc和WebApi在细节上差别还是有点大,例如: 在Mvc中,一个Controller中的所有公共方法一般情况下可以响应POST方法,而WebApi中不行 在Mvc中,一个Action方法中的参数即可来自Url,也可以来

从System.Web.Http.Owin的HttpMessageHandlerAdapter看适配器模式

.mytitle { background: #2B6695; color: white; font-family: "微软雅黑", "宋体", "黑体", Arial; font-size: 18px; font-weight: bold; height: 25px; line-height: 25px; margin: 15px 0 !important; padding: 5px 0 5px 20px; width: 97% } .arti