using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.OpenApi.Models;
using System;
using System.IO;
using System.Reflection;
namespace MEAS
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
//解决有没有的问题--服务,配置服务
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "MEAS", Version = "v1" });
var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.XML";
var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
//... and tell Swagger to use those XML comments.
c.IncludeXmlComments(xmlPath);
});
services.AddMvc().AddWebApiConventions();//解决返回值是HttpResponseMessage 自己的 json 序列化数据:
//services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Latest).AddJsonOptions(option =>
//{
// //原样输出,默认会把首字母小写
// option.JsonSerializerOptions.PropertyNamingPolicy = null;
//});
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
//解决需不需要的问题--请求处理--中间件,,有顺序要求
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
//env.IsProduction
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseSwagger();
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "MEAS v1"));//发布之后的版本
//app.UseHttpsRedirection(); 解决发布后warn: Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware[3]
//Failed to determine the https port for redirect这个问题.
//分配路由
app.UseRouting();
//认证
app.UseAuthentication();
//授权
app.UseAuthorization();
//端点
app.UseEndpoints(endpoints =>
{
//控制器路由
endpoints.MapControllers();
});
}
}
}