<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      依賴注入

      由容器統一創建對象并管理其創建對象的生命周期;

      AddTransient瞬時服務

      每次使用都會創建新的實例

      AddScoped作用域

      容器或子容器的生命周期內,對象保持一致,如果容器釋放掉,那就意味著對象也會釋放掉;

      AddSingleton單例

      整個根容器的生命周期內是同一個對象

      其他

      TryAddScoped

      AddHttpClient

      AddHttpContextAccessor//請求管道

      AddDbContext //EF CORE

      AddControllers

      批量注入

      var assembly = Assembly.GetExecutingAssembly();
      var ilist = assembly.GetTypes().Where(t => t.GetTypeInfo().IsInterface);
      var list = assembly.GetTypes().Where(t => t.GetTypeInfo().IsClass);
      foreach (Type serviceType in list)
      {
          var interfaceType = ilist.FirstOrDefault(x => x.IsAssignableFrom(serviceType));
          if (interfaceType != null)
          {
              
                  services.AddScoped(interfaceType, serviceType);
           
          }
      }

      其他生命周期中獲取服務

      private readonly IServiceProvider _serviceProvider;
      public Test(IServiceProvider serviceProvider)
      {
          _serviceProvider = serviceProvider;
      }
      
      public void test1()
      {
          using(var scope = this._serviceProvider.CreateScope())
          {
              //.NetCore 中IServiceProvider的 GetService()和GetRequiredService()之間的區別
              //GetService- 如果服務未注冊,則返回null
              //GetRequiredService- 如果服務未注冊,則拋出一個Exception異常
              var appointmentService = scope.ServiceProvider.GetService<IAppointmentService>();
          }
      }

      中間件

      系統自帶

      UseHttpsRedirection:強制https跳轉

      ....

      用途:

      1. 全局攔截,如:IP白名單,請求頭過濾
      2. 錯誤處理,如:未處理異常處理、自定義異常(登錄失敗,參數錯誤等)處理
      3. 權限校驗
      4. 。。。

      配置文件application.json

      讀取方式:

      1. Configuration["A"]
      2. Configuration["Serilog:LogPath"]
      3. Configuration.GetValue<bool>("DetailedErrors")
      4. Configuration.GetConnectionString("KKBMConnection")
      5. Configuration.Get<TOption>("")

      選項模式

      public class PositionOptions
      {
          public const string Position = "Position";
      
          public string Title { get; set; } = String.Empty;
          public string Name { get; set; } = String.Empty;
      }
      
      using ConfigSample.Options;
      
      var builder = WebApplication.CreateBuilder(args);
      
      builder.Services.Configure<PositionOptions>(
          builder.Configuration.GetSection(PositionOptions.Position));
      
      var app = builder.Build();

      IOptions、IOptionsMonitor以及IOptionsSnapshot的區別

      配置項目啟動地址

      1. 修改launchSettings.json
      2. builder.WebHost.UseUrls("http://0.0.0.0:5552", "https://127.0.0.1:5553", "https://localhost:5554")
      3. app.Urls.Add("http://*:6666");app.Urls.Add("http://+:8888");app.Urls.Add("http://0.0.0.0:9999");

      WebApi

      ActionResult返回類型

      return result;

      return Ok(result);//200

      return BadRequest(result);/400

      CORS允許跨域請求

      builder.Services.AddCors(options =>
      {
          options.AddPolicy("cors", policy =>
          {
              policy.AllowAnyHeader()
                    .AllowAnyMethod()
                    .AllowCredentials()
                    .WithOrigins("https://www.kkbmtj.com", "http://webadmin.kkbmtj.com", "https://webadmin.kkbmtj.com");
          });
      });
      //......
      var app = builder.Build();
      app.UseCors("cors");

      System.Text.Json API

      .netcore 中,盡量使用Syetem.Text.Json來序列化JSON,官方地址:System.Text.Json 序列化與反序列化

      JsonSerializer.Serialize(obj)

      JsonSerializer.Deserialize<T>(string)

      jsonSerializer.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;//駝峰規則
      jsonSerializer.PropertyNameCaseInsensitive = true;//是否區分大小寫
      jsonSerializer.Converters.Add(new SystemTextJsonConvert.DateTimeConverter());//自定義時間序列化
      jsonSerializer.Converters.Add(new SystemTextJsonConvert.DateTimeNullableConverter());
      jsonSerializer.Converters.Add(new SystemTextJsonConvert.LongToStringConverter());
      jsonSerializer.Converters.Add(new SystemTextJsonConvert.LongNullToStringConverter());
      jsonSerializer.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All);//解析格式,兼容中文
      jsonSerializer.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull;//忽略null值

      public class DateTimeConverter : JsonConverter<DateTime>
      {
          public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
          {
              return DateTime.Parse(reader.GetString());
          }
      
          public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options)
          {
              writer.WriteStringValue(value.ToString("yyyy-MM-dd HH:mm:ss"));
          }
      }

      進階

      JsonDocument

      JsonElement

      JsonSerializer.DeserializeAsync(Stream)

      HttpClient

      官方文檔:在 ASP.NET Core 中使用 IHttpClientFactory 發出 HTTP 請求

      注入服務:Service.AddHttpClient();

       

       

       

      posted on 2022-10-20 14:55  葉子牛牛  閱讀(234)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 天天躁日日躁狠狠躁中文字幕| 中文字幕av一区二区| 天堂网在线.www天堂在线资源| 日产精品一区二区三区免费| 神农架林区| 国产高清国产精品国产专区| 成人亚洲av免费在线| 九色综合狠狠综合久久| 亚洲色在线v中文字幕| 日韩V欧美V中文在线| 亚洲人成小说网站色在线| 国产欧美在线一区二区三| 国产老熟女视频一区二区| 亚洲AV无码久久精品日韩| 国产成人精品无缓存在线播放 | 人人人澡人人肉久久精品| 中文字幕久无码免费久久| 亚洲中文字幕国产精品| 337p粉嫩大胆色噜噜噜| 亚洲精品区午夜亚洲精品区| 国模肉肉视频一区二区三区| 欧美人与动牲交a免费| 忍着娇喘人妻被中出中文字幕| 午夜成人无码免费看网站| 老熟妇欲乱一区二区三区| 少妇被粗大的猛烈进出动视频| 亚洲 中文 欧美 日韩 在线 | 精品无码国产污污污免费| 国内精品自国内精品自久久| 国产成人精品无人区一区| 国产美女久久久亚洲综合| 久久不见久久见免费视频| 精品视频福利| 美女又黄又免费的视频| 亚洲精品一二三在线观看| 在线精品视频一区二区三四| 国产精品色哟哟成人av| 毛片无遮挡高清免费| 安达市| 亚洲国产欧美在线看片一国产| 国产AV国片精品有毛|