diff --git a/appveyor.test.ps1 b/appveyor.test.ps1
index ab5353bc..4fa1c7b0 100644
--- a/appveyor.test.ps1
+++ b/appveyor.test.ps1
@@ -38,7 +38,7 @@
function runUnitTest() {
write-host "dotnet test test\UnitTest" -ForegroundColor Cyan
- dotnet test test\UnitTest --filter "(FullyQualifiedName!~MySql) & (FullyQualifiedName!~Api.SqlServer) & (FullyQualifiedName!~Api.SQLite)" /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:Include="[Bootstrap*]*" /p:ExcludeByFile="..\..\src\admin\Bootstrap.Admin\Program.cs%2c..\..\src\admin\Bootstrap.Admin\Startup.cs%2c..\..\src\admin\Bootstrap.Admin\HttpHeaderOperation.cs" /p:CoverletOutput=..\..\
+ dotnet test test\UnitTest --filter "FullyQualifiedName!~MySql" /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:Include="[Bootstrap*]*" /p:ExcludeByFile="..\..\src\admin\Bootstrap.Admin\Program.cs%2c..\..\src\admin\Bootstrap.Admin\Startup.cs%2c..\..\src\admin\Bootstrap.Admin\HttpHeaderOperation.cs" /p:CoverletOutput=..\..\
}
function coverallUnitTest() {
diff --git a/src/admin/Bootstrap.Admin/Bootstrap.Admin.csproj b/src/admin/Bootstrap.Admin/Bootstrap.Admin.csproj
index a00ac7b0..99bdbfa7 100644
--- a/src/admin/Bootstrap.Admin/Bootstrap.Admin.csproj
+++ b/src/admin/Bootstrap.Admin/Bootstrap.Admin.csproj
@@ -4,7 +4,7 @@
netcoreapp3.0
true
-
+
$(MSBuildProjectName).xml
Windows
@@ -12,17 +12,13 @@
-
-
+
-
-
-
diff --git a/src/admin/Bootstrap.Admin/Controllers/Api/DictsController.cs b/src/admin/Bootstrap.Admin/Controllers/Api/DictsController.cs
index 72c5ff0e..47b89c83 100644
--- a/src/admin/Bootstrap.Admin/Controllers/Api/DictsController.cs
+++ b/src/admin/Bootstrap.Admin/Controllers/Api/DictsController.cs
@@ -1,4 +1,4 @@
-using Bootstrap.Admin.Query;
+using Bootstrap.Admin.Query;
using Bootstrap.DataAccess;
using Bootstrap.Security;
using Longbow.Web.Mvc;
@@ -47,4 +47,4 @@ namespace Bootstrap.Admin.Controllers.Api
return DictHelper.Delete(value);
}
}
-}
\ No newline at end of file
+}
diff --git a/src/admin/Bootstrap.Admin/Controllers/Api/LoginController.cs b/src/admin/Bootstrap.Admin/Controllers/Api/LoginController.cs
index 07148ca2..d86420cb 100644
--- a/src/admin/Bootstrap.Admin/Controllers/Api/LoginController.cs
+++ b/src/admin/Bootstrap.Admin/Controllers/Api/LoginController.cs
@@ -29,16 +29,15 @@ namespace Bootstrap.Admin.Controllers.Api
///
/// JWT 登陆认证接口
///
- ///
+ ///
///
[AllowAnonymous]
[HttpPost]
- public string Post([FromBody]JObject value)
+ public string Post([FromBody]User user)
{
- string token = null;
- dynamic user = value;
- string userName = user.userName;
- string password = user.password;
+ var token = string.Empty;
+ string userName = user.UserName;
+ string password = user.Password;
if (!string.IsNullOrEmpty(userName) && !string.IsNullOrEmpty(password) && UserHelper.Authenticate(userName, password))
{
token = BootstrapAdminJwtTokenHandler.CreateToken(userName);
diff --git a/src/admin/Bootstrap.Admin/Startup.cs b/src/admin/Bootstrap.Admin/Startup.cs
index 05ed94a3..a26276eb 100644
--- a/src/admin/Bootstrap.Admin/Startup.cs
+++ b/src/admin/Bootstrap.Admin/Startup.cs
@@ -11,8 +11,6 @@ using Microsoft.AspNetCore.Mvc.Versioning;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
-using Newtonsoft.Json;
-using Newtonsoft.Json.Serialization;
using System;
using System.Text.Encodings.Web;
using System.Text.Unicode;
@@ -59,11 +57,7 @@ namespace Bootstrap.Admin
services.AddDbAdapter();
services.AddIPLocator(DictHelper.ConfigIPLocator);
services.AddOnlineUsers();
- services.AddSignalR().AddNewtonsoftJsonProtocol(op =>
- {
- op.PayloadSerializerSettings.ContractResolver = new DefaultContractResolver();
- op.PayloadSerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
- });
+ services.AddSignalR().AddJsonProtocol(op => op.PayloadSerializerOptions.Configure());
services.AddSignalRExceptionFilterHandler(async (client, ex) => await client.SendMessageBody(ex).ConfigureAwait(false));
services.AddResponseCompression();
services.AddBootstrapAdminAuthentication().AddGitee(OAuthHelper.Configure).AddGitHub(OAuthHelper.Configure);
@@ -77,12 +71,7 @@ namespace Bootstrap.Admin
{
options.Filters.Add();
options.Filters.Add>();
- }).AddNewtonsoftJson(op =>
- {
- op.SerializerSettings.ContractResolver = new DefaultContractResolver();
- op.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
- JsonConvert.DefaultSettings = () => op.SerializerSettings;
- });
+ }).AddJsonOptions(op => op.JsonSerializerOptions.Configure());
services.AddApiVersioning(option =>
{
option.DefaultApiVersion = new ApiVersion(1, 0);
@@ -117,9 +106,8 @@ namespace Bootstrap.Admin
app.UseStaticFiles();
app.UseAutoGenerateDatabase();
app.UseRouting();
- app.UseAuthentication();
+ app.UseBootstrapAdminAuthentication(RoleHelper.RetrievesByUserName, RoleHelper.RetrievesByUrl, AppHelper.RetrievesByUserName);
app.UseAuthorization();
- app.UseBootstrapAdminAuthorization(RoleHelper.RetrievesByUserName, RoleHelper.RetrievesByUrl, AppHelper.RetrievesByUserName);
app.UseSwagger(Configuration["SwaggerPathBase"].TrimEnd('/'));
app.UseBootstrapHealthChecks();
app.UseOnlineUsers(TraceHelper.Filter, TraceHelper.Save);
diff --git a/src/admin/Bootstrap.DataAccess/Bootstrap.DataAccess.csproj b/src/admin/Bootstrap.DataAccess/Bootstrap.DataAccess.csproj
index 44e0cb6a..1fc309d9 100644
--- a/src/admin/Bootstrap.DataAccess/Bootstrap.DataAccess.csproj
+++ b/src/admin/Bootstrap.DataAccess/Bootstrap.DataAccess.csproj
@@ -4,13 +4,9 @@
netcoreapp3.0;netstandard2.0
-
-
-
-
-
+
diff --git a/src/admin/Bootstrap.DataAccess/Helper/SMSHelper.cs b/src/admin/Bootstrap.DataAccess/Helper/SMSHelper.cs
index 3805513e..e76fb953 100644
--- a/src/admin/Bootstrap.DataAccess/Helper/SMSHelper.cs
+++ b/src/admin/Bootstrap.DataAccess/Helper/SMSHelper.cs
@@ -1,5 +1,4 @@
using Microsoft.AspNetCore.WebUtilities;
-using Newtonsoft.Json;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
@@ -8,6 +7,12 @@ using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
using System.Threading;
+#if NETCOREAPP3_0
+using System.Text.Json;
+#else
+using Newtonsoft.Json;
+using Newtonsoft.Json.Serialization;
+#endif
namespace Bootstrap.DataAccess
{
@@ -38,7 +43,14 @@ namespace Bootstrap.DataAccess
var url = QueryHelpers.AddQueryString("http://open.bluegoon.com/api/sms/sendcode", requestParameters);
var req = await client.GetAsync(url);
var content = await req.Content.ReadAsStringAsync();
- var result = JsonConvert.DeserializeObject(content);
+#if NETCOREAPP3_0
+ var result = JsonSerializer.Deserialize(content, new JsonSerializerOptions()
+ {
+ PropertyNameCaseInsensitive = true
+ });
+#else
+ var result = JsonConvert.DeserializeObject(content, new JsonSerializerSettings() { ContractResolver = new DefaultContractResolver() });
+#endif
var ret = false;
if (result.Code == "1")
{
diff --git a/src/client/Bootstrap.Client.DataAccess/Bootstrap.Client.DataAccess.csproj b/src/client/Bootstrap.Client.DataAccess/Bootstrap.Client.DataAccess.csproj
index b9511984..3524c17d 100644
--- a/src/client/Bootstrap.Client.DataAccess/Bootstrap.Client.DataAccess.csproj
+++ b/src/client/Bootstrap.Client.DataAccess/Bootstrap.Client.DataAccess.csproj
@@ -6,6 +6,7 @@
+
diff --git a/src/client/Bootstrap.Client/Bootstrap.Client.csproj b/src/client/Bootstrap.Client/Bootstrap.Client.csproj
index a8bbd990..cde6b779 100644
--- a/src/client/Bootstrap.Client/Bootstrap.Client.csproj
+++ b/src/client/Bootstrap.Client/Bootstrap.Client.csproj
@@ -6,10 +6,9 @@
-
+
-
diff --git a/src/client/Bootstrap.Client/Startup.cs b/src/client/Bootstrap.Client/Startup.cs
index b5180699..16586438 100644
--- a/src/client/Bootstrap.Client/Startup.cs
+++ b/src/client/Bootstrap.Client/Startup.cs
@@ -9,8 +9,6 @@ using Microsoft.AspNetCore.HttpOverrides;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
-using Newtonsoft.Json;
-using Newtonsoft.Json.Serialization;
using System;
namespace Bootstrap.Client
@@ -62,12 +60,7 @@ namespace Bootstrap.Client
{
options.Filters.Add();
options.Filters.Add>();
- }).AddNewtonsoftJson(op =>
- {
- op.SerializerSettings.ContractResolver = new DefaultContractResolver();
- op.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
- JsonConvert.DefaultSettings = () => op.SerializerSettings;
- });
+ }).AddJsonOptions(op => op.JsonSerializerOptions.Configure());
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
@@ -97,9 +90,8 @@ namespace Bootstrap.Client
app.UseCookiePolicy();
app.UseRouting();
- app.UseAuthentication();
+ app.UseBootstrapAdminAuthentication(RoleHelper.RetrievesByUserName, RoleHelper.RetrievesByUrl, AppHelper.RetrievesByUserName);
app.UseAuthorization();
- app.UseBootstrapAdminAuthorization(RoleHelper.RetrievesByUserName, RoleHelper.RetrievesByUrl, AppHelper.RetrievesByUserName);
app.UseCacheManager();
app.UseOnlineUsers(callback: TraceHelper.Save);
app.UseEndpoints(endpoints =>
diff --git a/test/UnitTest/Bootstrap.Admin/Api/HealthCheckTest.cs b/test/UnitTest/Bootstrap.Admin/Api/HealthCheckTest.cs
index 972c93ca..92705c42 100644
--- a/test/UnitTest/Bootstrap.Admin/Api/HealthCheckTest.cs
+++ b/test/UnitTest/Bootstrap.Admin/Api/HealthCheckTest.cs
@@ -8,8 +8,8 @@ using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Diagnostics.HealthChecks;
using Microsoft.Extensions.Hosting;
-using Newtonsoft.Json;
using System.Net.Http;
+using System.Text.Json;
using UnitTest;
using Xunit;
@@ -85,8 +85,7 @@ namespace Bootstrap.Admin.Api
services.AddCacheManager();
services.AddConfigurationManager();
services.AddDbAdapter();
- var builder = services.AddHealthChecks();
- builder.AddCheck("db");
+ services.AddHealthChecks().AddCheck("db");
services.AddControllers();
}
@@ -101,10 +100,10 @@ namespace Bootstrap.Admin.Api
});
app.UseEndpoints(builder => builder.MapHealthChecks("/Healths", new HealthCheckOptions()
{
- ResponseWriter = (context, report) =>
+ ResponseWriter = async (context, report) =>
{
context.Response.ContentType = "application/json";
- return context.Response.WriteAsync(JsonConvert.SerializeObject(new { report.Entries.Keys, Report = report }));
+ await context.Response.WriteAsync(JsonSerializer.Serialize(new { report.Status, report.TotalDuration }));
},
ResultStatusCodes =
{
diff --git a/test/UnitTest/Bootstrap.Admin/HttpClientExtensions.cs b/test/UnitTest/Bootstrap.Admin/HttpClientExtensions.cs
index ff87a6bb..dec13f3e 100644
--- a/test/UnitTest/Bootstrap.Admin/HttpClientExtensions.cs
+++ b/test/UnitTest/Bootstrap.Admin/HttpClientExtensions.cs
@@ -1,6 +1,7 @@
-using Newtonsoft.Json;
+using Microsoft.Extensions.DependencyInjection;
using System.Net.Http;
using System.Net.Http.Headers;
+using System.Text.Json;
using System.Threading.Tasks;
namespace Bootstrap.Admin
@@ -18,7 +19,7 @@ namespace Bootstrap.Admin
{
var resp = await client.GetAsync(requestUri);
var json = await resp.Content.ReadAsStringAsync();
- return JsonConvert.DeserializeObject(json);
+ return JsonSerializer.Deserialize(json, new JsonSerializerOptions().Configure());
}
///
@@ -34,7 +35,7 @@ namespace Bootstrap.Admin
{
var resp = await client.PostAsJsonAsync(requestUri, t);
var json = await resp.Content.ReadAsStringAsync();
- return JsonConvert.DeserializeObject(json);
+ return JsonSerializer.Deserialize(json, new JsonSerializerOptions().Configure());
}
///
@@ -59,12 +60,12 @@ namespace Bootstrap.Admin
public static async Task DeleteAsJsonAsync(this HttpClient client, string requestUri, TValue t)
{
var req = new HttpRequestMessage(HttpMethod.Delete, requestUri);
- req.Content = new StringContent(JsonConvert.SerializeObject(t));
+ req.Content = new StringContent(JsonSerializer.Serialize(t));
req.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
var resp = await client.SendAsync(req);
var json = await resp.Content.ReadAsStringAsync();
- return JsonConvert.DeserializeObject(json);
+ return JsonSerializer.Deserialize(json, new JsonSerializerOptions().Configure());
}
///
@@ -90,7 +91,7 @@ namespace Bootstrap.Admin
{
var resp = await client.PutAsJsonAsync(requestUri, t);
var json = await resp.Content.ReadAsStringAsync();
- return JsonConvert.DeserializeObject(json);
+ return JsonSerializer.Deserialize(json, new JsonSerializerOptions().Configure());
}
///