開發Core項目的條件html
看到VS包的體積,以及不想往下走了.web
幸好,ms出了VS Code,可開發.NET Core項目.實際上記事本也能寫Core代碼,可是開發是須要調試的.json
因此本系列將持續用VS Code開發.以代碼爲主,關鍵點會加以註釋api
因爲公司事比較多,一直沒來得及更新mvc
目錄app
"Microsoft.AspNetCore.Server.Kestrel"ui
"Microsoft.AspNetCore.Mvc"spa
project.json 添加的依賴debug
"dependencies": { "Microsoft.AspNetCore.Server.Kestrel": "1.0.0", //webhost "Microsoft.AspNetCore.Mvc": "1.0.0" //webapi mvc }
添加的Startup.cs調試
using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.DependencyInjection; public class Startup { public void Configure(IApplicationBuilder app) { app.UseMvc();//使用MVC管道 } public void ConfigureServices(IServiceCollection services) { services.AddMvc();//MVC加入到DI容器中 } }
添加的ValuesController.cs
using Microsoft.AspNetCore.Mvc; public class ValuesController { [HttpGet("/values/{name}")]//name參數注入 public string Index(string name) { return "Hello World:" + name; } }
修改的Program.cs
public static void Main(string[] args) { new WebHostBuilder() .UseKestrel() .UseStartup<Startup>() .UseUrls("http://localhost:8899", "http://localhost:9988/")//同時監聽2個端口 .Build() .Run(); }
在.NET Core中,MVC和Web API實際上走的同一個管道
本例子會在上面的Web API基礎上修改
MVC中由於有razor動態編譯,因此不單單添加1個依賴便可
project.json修改的內容
"buildOptions": { "debugType": "portable", "emitEntryPoint": true, "preserveCompilationContext": true //動態編譯 }, "dependencies": { "Microsoft.AspNetCore.Server.Kestrel": "1.0.0", //webhost "Microsoft.AspNetCore.Mvc": "1.0.0", //webapi mvc "Microsoft.AspNetCore.Razor.Tools": { //mvc razor "version": "1.0.0-preview2-final", "type": "build" } },
添加的HomeController.cs
注意:須要繼承Controller類
using Microsoft.AspNetCore.Mvc; public class HomeController : Controller { [HttpGet("/{name}")] public IActionResult Index(string name) { ViewBag.Name = "Hello " + name; return View(); } }
添加Index.cshtml
目錄結構和以前方式(ASP.NET MVC)同樣
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>@ViewBag.Name</h1> </body> </html>
修改Program.cs
public static void Main(string[] args) { new WebHostBuilder() .UseKestrel() .UseStartup<Startup>() .UseContentRoot(Directory.GetCurrentDirectory()) //mvc views須要 .UseUrls("http://localhost:8899", "http://localhost:9988/")//同時監聽2個端口 .Build() .Run(); }
project.json
"dependencies": { //nuget包 "Microsoft.AspNetCore.Mvc": "1.0.0", //webapi mvc "Microsoft.AspNetCore.Server.Kestrel": "1.0.0", //webhost "Microsoft.AspNetCore.Razor.Tools": { //mvc razor "version": "1.0.0-preview2-final", "type": "build" }, "Microsoft.AspNetCore.StaticFiles": "1.0.0"//靜態文件 },
註冊管道
public void Configure(IApplicationBuilder app) { app.UseStaticFiles();//須要在mvc前 不然將優先被mvc路由匹配執行 app.UseMvc(); }
添加靜態文件
靜態文件默認是以wwwroot文件夾爲根目錄
注意: