ABP框架之使用配置文件

1. 通过配置控制SwaggerUI的显示

1.1 在 MyTest.Web.Host 下找到 appsettings.json文件增加如下语句

"UseSwagger": "true",

整个文件如下:

{
  "ConnectionStrings": {
    "Default": "Server=localhost; Database=MyTest3Db; Uid=root; Pwd=123456;"
  },


  "App": {
    "ServerRootAddress": "https://localhost:44311/",
    "ClientRootAddress": "http://localhost:4200/",
    "CorsOrigins": "http://localhost:4200,http://localhost:8080,http://localhost:8081,http://localhost:3000"
  },
  "UseSwagger": "true",
  "Authentication": {
    "JwtBearer": {
      "IsEnabled": "true",
      "SecurityKey": "MyTest_C421AAEE0D114E9C",
      "Issuer": "MyTest",
      "Audience": "MyTest"
    }
  },
  "Kestrel": {
    "Endpoints": {
      "Http": {
        "Url": "https://localhost:44311/"
      }
    }
  },
  "Swagger": {
    "ShowSummaries": false
  }
}

img

1.2在 MyTest.Web.HostStartup 文件夹中找到 Starup.cs 文件

进行如下修改:

if (Convert.ToBoolean(_appConfiguration["UseSwagger"] ?? "ture"))
{
    // Enable middleware to serve generated Swagger as a JSON endpoint
    app.UseSwagger(c => { c.RouteTemplate = "swagger/{documentName}/swagger.json"; });

    // Enable middleware to serve swagger-ui assets (HTML, JS, CSS etc.)
    app.UseSwaggerUI(options =>
    {
        // specifying the Swagger JSON endpoint.
        options.SwaggerEndpoint($"/swagger/{_apiVersion}/swagger.json", $"MyTest API {_apiVersion}");
        options.IndexStream = () => Assembly.GetExecutingAssembly()
            .GetManifestResourceStream("MyTest.Web.Host.wwwroot.swagger.ui.index.html");
        options.DisplayRequestDuration(); // Controls the display of the request duration (in milliseconds) for "Try it out" requests.  
    }); // URL: /swagger
}

重点在于如何获取配置文件的信息,可通过下列方式:

var value = _appConfiguration["key"]

img

2. 利用配置文件设置默认值

2.1 在 MyTest.Web.Host 下找到 appsettings.json文件增加如下语句

  "DefaultValue": {
    "Name": "plane",
    "Value": "J20"
  }

img

2.2 在 MyTest.Core 创建 Options 文件夹,在其下建立 DefaultValueOptions.cs 文件

namespace MyTest.Options
{
    public class DefaultValue
    {
        public string Name { get; set; }
        public string Value { get; set; }
    }
}

2.3在 MyTest.Web.HostStartup 文件夹中找到 Starup.cs 文件

进行如下修改:

// 第一种写法
services.Configure<DefaultValueOptions>(Options =>
{
    Options.Name = _appConfiguration["DefaultValue:Name"];
    Options.Value = _appConfiguration["DefaultValue:Value"];
});

// 第二种写法
// services.Configure<DefaultValueOptions>(_appConfiguration.GetSection("DefaultValue"));

img

2.4 使用

在应用层创建一个应用服务测试一下:

using Abp.Application.Services;
using Microsoft.Extensions.Options;
using MyTest.Options;
using System.Threading.Tasks;

namespace MyTest.OptionsTest
{
    public class OptionAppService : ApplicationService
    {
        private readonly DefaultValue _defaultValue;

        public OptionAppService(IOptions<DefaultValue> defaultValue)
        {
            _defaultValue = defaultValue.Value;
        }

        public async Task<string> TestDefaultValueConfigurationAsync()
        {
            return await Task.FromResult($"{_defaultValue.Name} : {_defaultValue.Value}");
        }
    }
}

在 Swagger 界面测试一下
img
成功!

posted @ 2022-08-03 17:56  岁月飞扬  阅读(623)  评论(0编辑  收藏  举报