Day6 ASP.NET Core API 2
29619 ワード
1. Program.cs
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace TodoApi
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
}
1) Host.CreateDefaultBuilder (args)
2) ConfigureWebHostDefaults (this IHostBuilder builder, Action configure);
(kestrel = cross-platform managed HTTP server-based.
このサーバーはASPです.NET Core AppをWindows以外のオペレーティングシステム環境で動作させる)
3) UseStartup (this IWebHostBuilder hostBuilder)
CreateHostBuilderはまずHostCreateDefaultBuilderを使用して、上記の5つの操作を行います.
この成果物は、UseStartupを使用して実行します.csファイルでタイプを指定します.
この値に基づいて、ConfigureWebHostDefaultsは上記の3つのロールを実行し、Host buildタスクを完了します.
2. Startup.cs
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.EntityFrameworkCore;
using TodoApi.Models;
namespace TodoApi
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<TodoContext>(opt => opt.UseInMemoryDatabase("TodoList"));
services.AddControllers();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
}
1) ConfigureServices (IServiceCollection services)
(
IServiceCollection =
ICollection< T >
int Count { get; }
bool IsReadOnly { get; }
void Add(T item);
void Clear();
bool Contains(T item);
bool Remove(T item);
IEnumerable< T > or IEnumerable
IEnumerator< T > GetEnumerator();
//or
IEnumerator GetEnumerator();
IList< T >
int IndexOf(T item);
void Insert(int index, T item);
void RemoveAt(int index);
)2) Configure (IApplicationBuilder app, IWebHostEnvironment env)
appが異なるHTTPリクエスト(パイプライン)にどのように応答するかを設定します.
-開発者例外ページ
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
アプリケーションが開発環境で実行されている場合(この時点のみ!)、「開発者例外」ページの有効化通常、次のミドルウェアから例外をキャプチャするために前面に配置します.
-TTPSリダイレクト
app.UseHttpsRedirection();
すべての要求はHTTPSを要求するすべてのHTTP要求をHTTPSにリダイレクトする
-静的ファイル
app.UseStaticFiles();
wwrootフォルダにcss、js、libを追加するプロセス-ルーティング
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/", async context =>
{
await context.Response.WriteAsync("Hello World!");
});
});
UseRouting=定義されたendPointセットをチェックし、要求に応じて最も一致するアイテムを選択します.UseEndpoints=endPointで実行します.選択したendPointに関連付けられた
# convention
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Author}/{action=GetAuthors}/{id?}");
});
# attribute
public class AuthorController : Controller
{
[Route("")]
[Route("Home")]
[Route("Home/Index")]
public IActionResult Index()
{
return View();
}
[Route("Home/GetAuthor/{id:int}")]
public IActionResult GetAuthor(int id)
{
ViewBag.Id = id;
return View();
}
}
構成public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.ConfigureServices(services =>
{
services.AddControllersWithViews();
})
.Configure(app =>
{
var loggerFactory = app.ApplicationServices
.GetRequiredService<ILoggerFactory>();
var logger = loggerFactory.CreateLogger<Program>();
var env = app.ApplicationServices.GetRequiredService<IWebHostEnvironment>();
var config = app.ApplicationServices.GetRequiredService<IConfiguration>();
logger.LogInformation("Logged in Configure");
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
var configValue = config["MyConfigKey"];
});
});
});
}
Reference
この問題について(Day6 ASP.NET Core API 2), 我々は、より多くの情報をここで見つけました https://velog.io/@miiunii/Day6-ASP.NET-Core-API-2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol