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
}
}
1.2在 MyTest.Web.Host
的 Startup
文件夹中找到 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"]
2. 利用配置文件设置默认值
2.1 在 MyTest.Web.Host
下找到 appsettings.json
文件增加如下语句
"DefaultValue": {
"Name": "plane",
"Value": "J20"
}
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.Host
的 Startup
文件夹中找到 Starup.cs
文件
进行如下修改:
// 第一种写法
services.Configure<DefaultValueOptions>(Options =>
{
Options.Name = _appConfiguration["DefaultValue:Name"];
Options.Value = _appConfiguration["DefaultValue:Value"];
});
// 第二种写法
// services.Configure<DefaultValueOptions>(_appConfiguration.GetSection("DefaultValue"));
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 界面测试一下
成功!