[转] Asp.net vNext webapi 自托管

摘要:
微软推出的Asp.netvNext的其中的一个目标就是统一mvc和webapi的框架。接下来我就演示一下一下几个内容1,怎么在Asp.netmvc6中创建简单的webapi。在Startup.cs中配置asp.net的请求管道,1publicclassStartup2{3publicvoidConfigure4{5//Nothinghere!"dependencies":{"Microsoft.AspNet.Server.IIS":"1.0.0-beta1","Microsoft.AspNet.Diagnostics":"1.0.0-beta1"},然后再Startup.cs中添加1publicclassStartup2{3publicvoidConfigure4{5//Formoreinformationonhowtoconfigureyourapplication,visithttp://go.microsoft.com/fwlink/?LinkID=39894067app.UseWelcomePage();8}9}然后f5运行效果就出来了:简单的创建了一个页面,接下来我们就进入正题,创建webapi。同样我们需要在project.json中添加mvc6的包1"dependencies":{2"Microsoft.AspNet.Server.IIS":"1.0.0-beta1",3"Microsoft.AspNet.Diagnostics":"1.0.0-beta1",4"Microsoft.AspNet.Mvc":"6.0.0-beta1"5},接下来添加mvc的请求管道在startup.cs中先引用Microsoft.Framework.DependencyInjection,然后添加如下方法:1publicvoidConfigureServices2{34services.AddMvc();5}注意方法名不要错了,在程序启动的时候mvc框架会自动运行这个方法。

【声明】本文转自:http://www.cnblogs.com/ListenCode/p/4206204.html

转载需注明!

微软推出的Asp.net vNext(asp.net 5.0)的其中的一个目标就是统一mvc 和web api 的框架。接下来我就演示一下一下几个内容

1,怎么在Asp.net mvc 6 中创建简单的web api。

2,怎么在空的项目工程中添加程序需要的组件。

3,怎么去配置Asp.net 5.0 管道。

4,怎么不通过IIS自我托管。

首先需要安装Visual Studio 2015 Preview,安装完之后,打开File >New >Project 然后 Template>C#>Web 新建一个Asp.Net Web Application 我命名为WebApiDemo:之后要选择 Asp.net 5 Empty 然后选择ok 就可以了 :

[转] Asp.net vNext webapi 自托管第1张

项目包括如下几个文件:

[转] Asp.net vNext webapi 自托管第2张

  • global.json 是包括整个solution的设置并且可以确保项目和项目之间的引用。
  • project.json 是这个工程的配置。
  • Startup.cs 是 startup 和 配置的代码。

在Startup.cs 中配置asp.net 的请求管道,

复制代码
1 public classStartup
2 {
3     public voidConfigure(IApplicationBuilder app)
4 {
5         //Nothing here!
6 }
7 }
复制代码

如果现在运行项目会发现什么也没有,那我们就先简单的添加一个欢迎页面,打开project.json 文件,这个文件可以配置我们这个程序的一些设置

复制代码
1 {
2 "webroot": "wwwroot",
3 "version": "1.0.0-*",
4 "exclude": [
5 "wwwroot"
6 ],
7 "packExclude": [
8 "**.kproj",
9 "**.user",
10 "**.vspscc"
11 ],
12 "dependencies": {
13 "Microsoft.AspNet.Server.IIS": "1.0.0-beta1"
14 },
15 "frameworks" : {
16 "aspnet50" : { },
17 "aspnetcore50" : { }
18 }
19 }
复制代码

其中 "dependencies" 是一些Nuget 包和类库。我们先添加一个Microsoft.AspNet.Diagnostics 。添加的时候会有只能提示。

[转] Asp.net vNext webapi 自托管第7张

"dependencies": { "Microsoft.AspNet.Server.IIS": "1.0.0-beta1", "Microsoft.AspNet.Diagnostics": "1.0.0-beta1" },

然后再Startup.cs 中添加

复制代码
1  public classStartup
2 {
3         public voidConfigure(IApplicationBuilder app)
4 {
5             //For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=398940
6 
7 app.UseWelcomePage();
8 }
9     }
复制代码

然后f5 运行 效果就出来了:

[转] Asp.net vNext webapi 自托管第10张

简单的创建了一个页面,接下来我们就进入正题,创建web api。

同样我们需要在project.json 中添加mvc 6的包

1 "dependencies": {
2 "Microsoft.AspNet.Server.IIS": "1.0.0-beta1",
3 "Microsoft.AspNet.Diagnostics": "1.0.0-beta1",
4 "Microsoft.AspNet.Mvc": "6.0.0-beta1"
5     },

接下来添加mvc 的请求管道在startup.cs 中

先引用Microsoft.Framework.DependencyInjection,

然后添加如下方法:

1  public voidConfigureServices(IServiceCollection services)
2 {
3     
4 services.AddMvc();
5   }

注意方法名不要错了,在程序启动的时候 mvc 框架会自动运行这个方法。

然后在 Startup.cs 的configure方法中添加代码:app.UseMvc();

然后新建一个Models文件夹 里面新建一个类Test

复制代码
1     public classTest
2 {
3         public int Id { get; set; }
5 [Required]
6         public string Title { get; set; }
7     }
复制代码

同样新建一个文件夹Controller 然后新建一个HomeController 的Wep Api 的 controller。

复制代码
1 namespaceWebApiDemo.Controllers.Controllers
2 {
3     //注意这个写法,web api 的路由 不要忘了前面的api当然你可以随意的命名 
4     [Route("api/[controller]")]
5     public classHomeController : Controller
6 {
7 
8         public static List<Test> list = new List<Test>() {
9               new Test() { Id=1, Title="test1"},
10               new Test() { Id=2, Title="test2"}
11 };
12 
13 
14 
15         //GET: api/values
16         //获得所有数据 
17 [HttpGet]
18         public IEnumerable<Test>Get()
19 {
20             returnlist;
21 }
22 
23        //按照id 查找数据 其中HttpGet 中 {id} 是模板 Name是路由的名字在mvc 5中的api 中HttpGet 是没有参数的。
24         //GET api/values/5
25         [HttpGet("{id}", Name = "getbyid")]
26         public IActionResult Get(intid)
27 {
28             var item = list.FirstOrDefault(p =>p.Id.Equals(id));
29 
30             if (item == null)
31 {
32                 returnHttpNotFound();
33 }
34 
35             return newObjectResult(item);
36 
37 }
38 
39         //POST api/values
40        //添加数据
41 [HttpPost]
42         public voidPost([FromBody]Test value)
43 {
44             if (!ModelState.IsValid)
45 {
46                 Context.Response.StatusCode = 400;
47 }
48             else
49 {
50                 value.Id = list.Max(p => p.Id) + 1;
51 list.Add(value);
52 
53                 string url = Url.RouteUrl("getbyid", new { id =value.Id });
54 
55                 Context.Response.StatusCode = 201;
56                //添加成功之后,跳转看是否添加成功
57                 Context.Response.Headers["Location"] =url;
58 }
59 
60 
61 }
62 
63         //更新数据
64         //PUT api/values/5
65         [HttpPut("{id}")]
66         public IActionResult Put(intid, [FromBody]Test value)
67 {
68             if (!ModelState.IsValid)
69 {
70                 return new HttpStatusCodeResult(500);
71 }
72             else
73 {
74                 var item = list.FirstOrDefault(p =>p.Id.Equals(id));
75 
76                 if (item == null)
77 {
78                     returnHttpNotFound();
79 }
80                 else
81 {
82 
83                     value.Id =item.Id;
84 
85 list.Remove(item);
86 list.Add(value);
87 
88                     return newObjectResult(value);
89 }
90 
91 }
92 }
93         
94         //删除数据
95         //

免责声明:内容来源于网络,仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇js的窗口坐标及拖拽php过滤器下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

webapi的返回类型,webapi返回图片

1.0 首先是返回常用的系统类型,当然这些返回方式不常用到。如:int,string,list,array等。这些类型直接返回即可。 1 public List<string> Get() 2 { 3 List<string> list = new List<string>() {...

ASP.NET Core WebAPI学习-1

Web API学习 ASP.NET Core WebAPI学习-1 ASP.NET Core WebAPI学习-2 ASP.NET Core WebAPI学习-3 ASP.NET Core WebAPI学习-4 ASP.NET Core WebAPI学习-5 ASP.NET Core WebAPI学习-6 创建Web API项目 打开Visual...

程序破解之 API HOOK技术 z

API HOOK,就是截获API调用的技术,在程序对一个API调用之前先执行你的函数,然后根据你的需要可以执行缺省的API调用或者进行其他处理,假设如果想截获一个进程对网络的访问,一般是几个socket API : recv,recvfrom, send, sendto等等,当然你可以用网络抓包工具,这里只介绍通过API HOOK的方式来实现, 主要原理是...

alluxio2.0特性-预览

项目地址 https://github.com/Alluxio/alluxio/tree/branch-2.0-preview 2.0版本-构思和设计 支持超大规模数据工作负载 Alluxio作为计算和存储之间的数据编排层,使数据移动并且可以跨多个不同的存储系统访问:HDFS,对象存储,网络附加存储,随着时间的推移,Alluxio需要的元数据支持规模 提供...

使用 WSO2 API Manager 管理 Rest API

WSO2 API Manager 简介 随着软件工程的增多,越来越多的软件提供各种不同格式、不同定义的 Rest API 作为资源共享,而由于这些 API 资源的异构性,很难对其进行复用。WSO2 API Manager (下文简称为 AM)提供了一个完整的 API 发布的解决方案,从创建和管理 API,到监控 API,AM 提供了 API 整个生命周期...

ASP.NET MVC 提供与访问 Web Api

ASP.NET MVC 提供与访问 Web Api 一、提供一个 Web Api 新建一个项目,类型就选 “Web Api”。我用的是MVC5,结果生成的项目一大堆东西,还编译不过,真操蛋。用nuget装了好一阵才跑通。我估计MVC Web项目也可以的,甚至Web Form应该都行。 下面是一个Action。主要是想返回json数据。 public C...