.NET Core 上不光可以做控制台的程序, 还可也实现 AST.NET 的 Web 应用, 而且是自带服务器的那种. 像 NodeJS, Spring Boot, Netty 那种非容器型的嵌入式的 Web Server, 非常适合于做微服务应用. 谁说 ASP.NET 就一定要部署到 IIS 上呢?
本文参考 https://docs.asp.net/en/latest/getting-started.html 而来, 基本步骤是一致的
1. 安装 .NET Core
参考上一篇 .NET Core 上手体验 Hello World
2. 创建 .NET Core 项目
mkdir appnetcoreapp
cd aspnetcoreapp
dotnet new
3. 更新 project.json
引入 Kestrel HTTP server 依赖
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
{ "version": "1.0.0-*", "buildOptions": { "debugType": "portable", "emitEntryPoint": true }, "dependencies": {}, "frameworks": { "netcoreapp1.0": { "dependencies": { "Microsoft.NETCore.App": { "type": "platform", "version": "1.0.0" }, "Microsoft.AspNetCore.Server.Kestrel": "1.0.0" }, "imports": "dnxcore50" } } } |
4. 恢复包 -- 依据 package.json 恢复项目依赖, 生成在 package.lock.json 文件中
dotnet restore
这一步由 package.json
确定好了 package.lock.json
之好, 才有可能在 IDE 中引入该项目, 使用所依赖的类. 或者 dotnet run
编译时也需要用到 package.lock.json
文件.
5. 添加 Startup.cs
定义最简单的请求逻辑
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
using System; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; namespace aspnetcoreapp { public class Startup { public void Configure(IApplicationBuilder app) { app.Run(context => { return context.Response.WriteAsync("Hello from ASP.NET Core!"); }); } } } |
6. 修改 Program.cs
使之启动一个 Web 服务
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
using System; using Microsoft.AspNetCore.Hosting; namespace aspnetcoreapp { public class Program { public static void Main(string[] args) { var host = new WebHostBuilder() .UseKestrel() .UseStartup() .Build(); host.Run(); } } } |
7. 用 dotnet run
启动 Web 服务
➜ aspnetcoreapp$ dotnet run
Project aspnetcoreapp (.NETCoreApp,Version=v1.0) was previously compiled. Skipping compilation.
Hosting environment: Production
Content root path: /Users/Yanbin/Desktop/aspnetcoreapp/bin/Debug/netcoreapp1.0
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
8 访问服务 http://localhost:5000
➜ aspnetcoreapp$ curl -i http://localhost:5000
HTTP/1.1 200 OK
Date: Sat, 03 Sep 2016 05:09:33 GMT
Transfer-Encoding: chunked
Server: Kestrel
Hello from ASP.NET Core!
Server 是 Kestrel
, 没实现路由, 不管你访问 http://localhost:5000 下的什么都是显示一样的内容. 其他的是高级内容, 诸如路由, 静态文件, 国际化, 错误处理, MVC 等. ASP.NET Core 项目可以被部署到许多地方, 例如 IIS, Docker, Azure 等.
附录: 1. ASP.NET Core Documentation
本文链接 https://yanbin.blog/try-asp-net-core/, 来自 隔叶黄莺 Yanbin Blog
[版权声明] 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。