ASP.NET Core 1.0 入門——Application Startup¶
警告
您當前查看的頁面是未經授權的轉載!
如果當前版本排版錯誤,請前往查看最新版本:http://www.cnblogs.com/qin-nz/p/aspnet5-application-startup.html
提示
更新時間:2016年01月20日。
Startup 類¶
在 ASP.NET Core 1.0 中,Startup
類是一個應用的入口點,我們可以為不同環境配置不同的內容。
編譯器會查找項目文件夾下的所有 *.cs
文件進行編譯,而運行時會尋找所有命名空間下類名為 Startup
的類作為啟動方式。
注解
可以通過設置 project.json
文件選擇需要(或不需要)編譯的文件和文件夾;也可以設置在不同的程序集中搜索 Startup
類。
Startup
類必須定義一個 Configure
方法,也可以同時定義一個 ConfigureServices
方法。
Startup 類的構造函數¶
構造函數,可以幫我們設置配置文件的位置,比如下面的代碼設置了 appsettings.json 。
public Startup(IHostingEnvironment env)
{
// 設置 配置文件 的位置
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
if (env.IsDevelopment())
{
// For more details on using the user secret store see http://go.microsoft.com/fwlink/?LinkID=532709
builder.AddUserSecrets();
}
builder.AddEnvironmentVariables();
Configuration = builder.Build();
}
默認的 appsettings.json 內容如下:
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Verbose",
"System": "Information",
"Microsoft": "Information"
}
}
}
ConfigureServices 方法¶
ConfigureServices
用來定義我們使用了哪些服務,比如MVC、EF、Identity、Logging、Route;也可以自定義一些服務。 這里定義的服務是基於依賴注入(Dependency Injection)的。 在ASP.NET Core 1.0中,依賴注入技術的是被大量使用的。
下面的例子中,配置了EntityFramework(用於數據訪問,需要在 appsettings.json
中正確設置連接字符串)、Identity(用於身份驗證/即登錄)和MVC。
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.AddMvc();
// Add application services.
services.AddTransient<IEmailSender, AuthMessageSender>();
services.AddTransient<ISmsSender, AuthMessageSender>();
}
在調用過 ConfigureServices
之后,運行時會調用 Configure
方法。
Configure 方法¶
Configure
方法用於加載各種需要的中間件,類似於傳統的 OWIN(Open Web Interface for .NET)。 Configure
方法簽名必須包含 IApplicationBuilder
的參數,也可以包含一些其他的五福 IHostingEnvironment
和 ILoggerFactory
的參數。
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
//在控制台中輸出log
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
//在開發環境下,顯示錯誤詳細信息
if (env.IsDevelopment())
{
app.UseBrowserLink();
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
else
{
//否則,導向錯誤頁面
app.UseExceptionHandler("/Home/Error");
// 創建數據庫
try
{
using (var serviceScope = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>()
.CreateScope())
{
serviceScope.ServiceProvider.GetService<ApplicationDbContext>()
.Database.Migrate();
}
}
catch { }
}
app.UseIISPlatformHandler(options => options.AuthenticationDescriptions.Clear());
//允許訪問wwwroot文件夾下的靜態文件
app.UseStaticFiles();
//設置身份驗證方式
app.UseIdentity();
// 設置MVC路由
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
警告
設置MVC的路由方式必須在 Configure
中設置,僅在 ConfigureServices
中設置是無效的。
其他資源¶
ASP.NET Core 1.0 入門——Application Startup 由 勤奮的小孩 創作,采用 知識共享 署名-相同方式共享 4.0 國際 許可協議進行許可。
本許可協議授權之外的使用權限可以從 http://space.cnblogs.com/msg/send/qin-nz 處獲得。