利用记事本创建一个ASP.NET Core RC2 MVC应用

步骤一、安装最新的.NET Core SDK

我们可以根据自身的操作系统环境从https://github.com/dotnet/cli上下载.NET Core最新的SDK,这个SDK包含.NET Core Runtime和一些有用工具(比如命令行)。如果你已经安装了老旧的版本,我个人建议你先将其卸载。

目前的版本为1.0.0-preview1-002702,我们可以执行dotnet –version命令确认是否是这个版本。

步骤二、定义源代码和配置

我们创建一个目录(假设为C:\HelloWorld)来存放MVC应用所有的源文件。下图展现了定义在这个目录下的所有文件。

定义NuGet.xml

我们在NuGet.xml文件中定义应用程序使用的NuGet包所在的站点地址(https://www.myget.org/F/aspnetvnext/api/v3/index.json)。

   1: <?xml version="1.0" encoding="utf-8"?>
   2: <configuration>
   3:   <packageSources>
   4:     <add key="RC2" value="https://www.myget.org/F/aspnetvnext/api/v3/index.json" />
   5:   </packageSources>
   6: </configuration>

定义Project.json

定义在Project.json文件中的所有配置如下所示,我们会发现它与RC1中的Project.json不太一样。RC2中,我们可以向定义普通依赖一样来选择运行时(Microsoft.NETCore.App),或者说运行时本质已经成为了一个一般意义上的以来。除了这个针对运行时的依赖,我们还添加了两个依赖,它们分别是“Microsoft.AspNetCore.Mvc”和“Microsoft.AspNetCore.Server.Kestrel”,前者定义了ASP.NET Core MVC的核心框架,后者则提供了一个针对Kestrel的Server (ASP.NET Core管道中的Server专门负责请求的监听、接收和回复)。我们在“framework”节点添加了一个名为“netcoreapp1.0”的框架,之前的名称叫做“dnxcore50”。

   1: {
   2:   "version": "1.0.0-*",
   3:   "buildOptions": {
   4:     "emitEntryPoint": true
   5:   },
   6:   "dependencies": {
   7:     "Microsoft.NETCore.App": {
   8:       "type": "platform",
   9:       "version": "1.0.0-rc2-3002702"
  10:     },
  11:     "Microsoft.AspNetCore.Mvc":"1.0.0-rc2-final",
  12:     "Microsoft.AspNetCore.Server.Kestrel":"1.0.0-rc2-final"
  13:   },
  14:   "frameworks": {
  15:     "netcoreapp1.0": {
  16:       "imports": "dnxcore50"
  17:     }
  18:   }
  19: }

定义入口程序

启动应用的入口程序定义在Program.cs。如下面的代码片段所示,我们在这个文件中定义了一个Program类型,并在Main方法中编写了启动MVC应用的代码。具体来说,我们创建了一个WebHostBuilder对象通过调用扩展方法UseKestrel为构建的HTTP消息处理管道注册了一个Kestrel服务器。在调用UseStartup方法将Startup设置为启动类型之后,我们调用Build方法创建了一个WebHost对象。我们最终调用Run方法启动WebHost,进而启动了我们的MVC应用。

   1: using Microsoft.AspNetCore.Hosting;
   2: using Microsoft.AspNetCore.Builder;
   3:  
   4: public class Program
   5: {
   6:     public static void Main(string[] args)
   7:     {
   8:         new WebHostBuilder()
   9:         .UseKestrel()
  10:         .UseStartup<Startup>()
  11:         .Build()
  12:         .Run();
  13:     }
  14: }  

定义初始化类型

ASP.NET Core应用启动的时候会先执行一段初始化操作来构建一个完整的HTTP消息处理管道,这些初始化操作定义在Startup.cs。上面调用WebHostBuilder的UseStartup方法指定的类型Startup就定义在这个文件中。如下面的代码片段所示,我们在ConfigureServices方法中注册了与MVC相关的服务,并利用Configure方法将实现MVC框架的中间件注册到消息处理管道中。

   1: using Microsoft.AspNetCore.Builder;
   2: using Microsoft.Extensions.DependencyInjection;
   3:  
   4: public class Startup
   5: {
   6:     public void ConfigureServices(IServiceCollection services)
   7:     {
   8:         services.AddMvc();
   9:     }
  10:  
  11:     public void Configure(IApplicationBuilder app)
  12:     {
  13:         app.UseMvc();
  14:     }
  15: } 

定义Controller

我们在HomeController中定义了MVC应用中唯一的一个Controller,并按照如下的形式定义了一个唯一的Action方法。这个Action方法返回一个简单的字符串“Hello World”,并映射为应用的根地址(“/”)

   1: using Microsoft.AspNetCore.Mvc;
   2: public class HomeController : Controller
   3: {
   4:     [HttpGet("/")]
   5:     public string Index() 
   6:     {
   7:         return "Hello World";          
   8:     }
   9: }


步骤三、运行程序

RC2提供了一个非常强大的命令行(dotnet),包括恢复NuGet包以及编译执行.NET应用的相关操作都可以通过它来完成

恢复NuGet包

我们打开命令行工具并切换到应用所在的目录,执行dotnet restore命令恢复在project.json中使用的NuGet包。

编译执行程序

我们直接执行dotnet build命令对整个应用实施编译,然后执行dotnet run命令启动我们的MVC应用。

向HomeController发起请求

当程序启动后,Kestrel服务器会利用5000端口对HTTP请求实施监听。由于定义在HomeController的Action方法Index被映射为应用根地址,所以我们利用浏览器向该地址发送请求会得到这个Action方法的响应结果。

原文地址:http://www.cnblogs.com/artech/p/hello-asp-net-core-rc2-mvc.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/329406.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

datatable中某一列最小值_获取DataTable 某一列所有值

//获取某一列值string orderids (from d in dt.AsEnumerable() select d.Field("OrderID")).ToList().ListToString();/// /// 判断字符串是否在某字符串数组当中/// /// /// /// public static bool In(this string value, params string[] items){return items.An…

29.操作系统对磁盘的4层抽象小结

【README】 本文总结了操作系统 对磁盘的4层抽象&#xff0c;并给出了详细介绍的post 链接&#xff1b; 【1】对磁盘的4层抽象 【1.1】对磁盘的第1层抽象 通过盘块号读写磁盘&#xff08;读写多个扇区&#xff09;&#xff1b; 因为磁盘底层操作的单位是扇区&#xff08;51…

Oracle入门(十四C)之转换函数

一、数据转换类型 为数据库创建表时&#xff0c;SQL 程序员必须定义在表的各个字段中存储何种数据。在 SQL 中&#xff0c;有几种不同的数据类型。这些数据类型用于定义每个列中可以包含的值的范围。 &#xff08;1&#xff09;在本文中将使用以下数据类型VARCHAR2 CHAR NUMBER…

发布在即!.NET Core 1.0 RC2已准备就绪

先说点废话&#xff0c;从去年夏天就开始关注学习ASP.NET Core&#xff0c;那时候的版本还是beta5&#xff0c;断断续续不停踩坑、一路研究到11月份RC1发布。 在这个乐此不疲的过程里&#xff0c;学习了很多新的东西&#xff0c;对ASP.NET Core也是越来越喜爱。然而到现在&…

1.java IO模型(BIO,NIO,AIO)

【README】 本文介绍了 3种 java io模型&#xff0c;包括 BIO&#xff0c;NIO&#xff0c; AIO&#xff1b; IO模型名称 描述 工作原理 BIO-Blocking IO 同步并阻塞式IO 一个服务器线程处理一个客户端连接 NIO-Non-blocking IO 同步非阻塞式IO 一个服务器线程处理多个…

Oracle入门(十四D)之常规函数

一、NULL处理 &#xff08;1&#xff09;函数的计算过程 到目前为止&#xff0c;您已经学会了在简单语句中应用单行函数。不过&#xff0c;函数可以嵌套任意层。所以&#xff0c;了解嵌套函数的计算过程非常重要。下例就是一个嵌套函数。其计算过程是从最里层开始计算&#xff…

python定义函数prime判断是否是素数_用自定义函数判断素数 用C语言编写自定义函数prime(int x),判断x是否为素数?...

用C语言编写自定义函数prime(int x)&#xff0c;判断x是否为素数&#xff1f;int prime(int x){int i&#xff0c;kk(int)sqrt( (double)x )for(i2i&ltki )if(x%i0)break// 如果完成所有循环&#xff0c;那么x为素数if(i&gtk)retrun 1elsereturn 0}C语言&#xff0c;编…

构建高性能.NET应用之配置高可用IIS服务器-第一篇:IIS必须掌握的知识

正确而合理的配置IIS是构建一个高性能和高可扩展应用的基础。虽然很多的时候采用默认的配置就已经可以处理一般的情况&#xff0c;但是随着站点应用的发展&#xff0c;特别是当访问量稍微大一点的时候&#xff0c;就会暴露出很多我们认为的“奇奇怪怪”的问题。 所以&#xff0…

3.NIO选择器(基于NIO的服务器与客户端通讯)

【README】 本文总结自B站《尚硅谷netty》&#xff0c;很不错&#xff1b; 【1】选择器Selector&#xff08;多路复用器&#xff09; 【1.1】基本介绍 1&#xff09;Java 的 NIO&#xff0c;用非阻塞的 IO 方式。可以用一个线程&#xff0c;处理多个客户端连接&#xff0c;就…

perplexity 衡量指标_求通俗解释NLP里的perplexity是什么?

高赞回答讲得已经非常通俗易懂&#xff0c;不过由于自然语言处理的发展&#xff0c;出现了许多不同类型的模型&#xff0c;对困惑度这个指标的计算方法颇有不同(包括前面的高赞回答也只是展开了一个子集)&#xff0c;常常让人摸不着头脑。所以这个回答旨在尽量全面地梳理不同语…

C#在Linux上的开发指南

本人才疏学浅&#xff0c;在此记录自己用C#在Linux上开发的一点经验&#xff0c;写下这篇指南。&#xff08;给想要在Linux上开发C#程序的朋友提供建议&#xff09; 目前在Linux上跑的网站&#xff1a;http://douxiubar.com | http://douxiubar.com/AdminLogin/Index&#xff0…

Oracle入门(十四E)之条件表达式case和deocde函数

一、表达式&#xff08;1&#xff09;条件表达式 共有两种条件表达式&#xff0c;即 CASE 表达式和DECODE 表达式。就 CASE 比较两个表达式而言&#xff0c;该表达式在逻辑上等效于之前学习的NULLIF 函数。如果两个表达式相等&#xff0c;则返回null&#xff0c;如果不相等&…

4.基于NIO的群聊系统

【README】 1.本文总结自B站《netty-尚硅谷》&#xff0c;很不错&#xff1b; 2.文末有错误及解决方法&#xff1b; 【1】群聊需求 1&#xff09;编写一个 NIO 群聊系统&#xff0c;实现服务器端和客户端之间的数据简单通讯&#xff08;非 阻塞&#xff09; 2&#xff09;实…

构建高性能.NET应用之配置高可用IIS服务器-第二篇 IIS请求处理模型

在IIS 中&#xff0c;Http监听者(http.sys)和请求处理者由两个系统服务在控制着。一个是WWW 服务&#xff0c;另外一个就是Windows Process Activation。 对于WWW服务&#xff0c;它主要是监控IIS的配置文件&#xff0c;将新的配置信息用到HTTP.sys和WAS上。同时它也维持一些性…

Oracle入门(十四F)之PL/SQL定义变量

一、变量介绍 &#xff08;1&#xff09;变量的使用可以使用变量&#xff1a; 临时存储数据存储值的操作可重用性&#xff08;2&#xff09;PL&#xff0f;SQL中的变量处理变量是&#xff1a; 在声明部分中声明和初始化在可执行部分中使用和分配新值变量可以是&#xff1a;作为…

小米手环nfc门卡摸拟成功后不能开门_如何使用小米手环5 NFC版进行门卡模拟(如公司门禁卡、小区门禁卡、学校门禁卡等)?...

由于本人最近购入了小米手环5 NFC版&#xff0c;所以对小米手环模拟门禁卡比较清楚一点。说一下用该手环模拟门禁的方法吧&#xff0c;我本人模拟的是学校公寓的门禁卡&#xff0c;不过学校的门禁卡是加密卡&#xff0c;可能操作起来稍微比不加密的门禁卡麻烦一点&#xff0c;因…

5.NIO零拷贝与传统IO的文件传输性能比较

【README】 1.本文总结自B站《netty-尚硅谷》&#xff0c;很不错&#xff1b; 2.本文部分内容参考自 NIO效率高的原理之零拷贝与直接内存映射 - 腾讯云开发者社区-腾讯云 【1】零拷贝原理 【1.1】传统IO的文件拷贝 【图解】 step1&#xff09;调用 sys_read系统调用&#…

二进制漏洞利用与挖掘_二进制各种漏洞原理实战分析总结

本部分将对常见的二进制漏洞做系统分析&#xff0c;方便在漏洞挖掘过程中定位识别是什么类型漏洞&#xff0c;工欲善其事&#xff0c;必先利其器。0x01栈溢出漏洞原理栈溢出漏洞属于缓冲区漏洞的一种&#xff0c;实例如下&#xff1a;编译后使用windbg运行直接运行到了地址0x41…

Oracle入门(十四H)之良好的编程实践

一、为什么要学习它 好的编程实践是技巧&#xff0c;可以按照创建最好的代码可能。 编程实践涵盖了一切从代码更多可以用更快的速度创建代码性能。 软件工程团队通常会遵循风格指导让团队中的每个人使用相同的技术。 这使它更容易阅读和修改编写的代码其他。二、编程实践已经学…

微软.NET 正式劈腿成功,横跨所有平台

.NET官方博客宣布了《Announcing .NET Core RC2 and .NET Core SDK Preview 1》&#xff0c;正式如期发布了.NET Core RC2, 现在可以放心的基于.NET Core 构建 ASP.NET Core, console apps 和 class libraries for Windows, OS X and Linux。这里贴张图表达下他们之间的关系: …