Browse Source

还原服务器端模式

master
SmallChi(Koike) 4 years ago
parent
commit
385f663f91
10 changed files with 168 additions and 64 deletions
  1. +0
    -12
      src/JTTools/.config/dotnet-tools.json
  2. +5
    -28
      src/JTTools/JTTools.csproj
  3. +37
    -0
      src/JTTools/JsonConvert/ByteArrayHexTextJsonConverter.cs
  4. +37
    -0
      src/JTTools/Pages/_Host.cshtml
  5. +80
    -18
      src/JTTools/Program.cs
  6. +1
    -1
      src/JTTools/Shared/MainLayout.razor
  7. +1
    -0
      src/JTTools/_Imports.razor
  8. +4
    -4
      src/JTTools/wwwroot/css/bootstrap/bootstrap.min.css
  9. +1
    -1
      src/JTTools/wwwroot/css/bootstrap/bootstrap.min.css.map
  10. +2
    -0
      src/JTTools/wwwroot/css/site.css

+ 0
- 12
src/JTTools/.config/dotnet-tools.json View File

@@ -1,12 +0,0 @@
{
"version": 1,
"isRoot": true,
"tools": {
"dotnet-ef": {
"version": "3.1.5",
"commands": [
"dotnet-ef"
]
}
}
}

+ 5
- 28
src/JTTools/JTTools.csproj View File

@@ -1,43 +1,20 @@
<Project Sdk="Microsoft.NET.Sdk.Web"> <Project Sdk="Microsoft.NET.Sdk.Web">


<PropertyGroup> <PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<LangVersion>8.0</LangVersion>
<RazorLangVersion>3.0</RazorLangVersion>
<TargetFramework>netcoreapp3.1</TargetFramework>
<UserSecretsId>203b72c5-3ccb-4c06-a644-1983ba94fba2</UserSecretsId>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
</PropertyGroup> </PropertyGroup>


<ItemGroup> <ItemGroup>
<Compile Remove="JsonConvert\**" />
<Content Remove="JsonConvert\**" />
<EmbeddedResource Remove="JsonConvert\**" />
<None Remove="JsonConvert\**" />
</ItemGroup>

<ItemGroup>
<Content Remove="Pages\_Host.cshtml" />
</ItemGroup>

<ItemGroup>
<Compile Include="JsonConvert\ByteArrayHexConverter.cs" />
</ItemGroup>

<PropertyGroup>
<!--https://docs.microsoft.com/en-us/aspnet/core/blazor/host-and-deploy/configure-linker?view=aspnetcore-3.1#configure-the-linker-for-internationalization-->
<BlazorWebAssemblyI18NAssemblies>all</BlazorWebAssemblyI18NAssemblies>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="3.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Build" Version="3.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="3.1.4" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="3.2.0" />
<PackageReference Include="BlazorStrap" Version="1.3.2" /> <PackageReference Include="BlazorStrap" Version="1.3.2" />
<PackageReference Include="JT1078" Version="1.0.2" /> <PackageReference Include="JT1078" Version="1.0.2" />
<PackageReference Include="JT808" Version="2.2.10" /> <PackageReference Include="JT808" Version="2.2.10" />
<PackageReference Include="JT808.Protocol.Extensions.JT1078" Version="2.2.9.1" /> <PackageReference Include="JT808.Protocol.Extensions.JT1078" Version="2.2.9.1" />
<PackageReference Include="JT808.Protocol.Extensions.JTActiveSafety" Version="1.0.4" /> <PackageReference Include="JT808.Protocol.Extensions.JTActiveSafety" Version="1.0.4" />
<PackageReference Include="JT809" Version="2.1.4-preview4" /> <PackageReference Include="JT809" Version="2.1.4-preview4" />
<PackageReference Include="JT809.Protocol.Extensions.JT1078" Version="2.1.4-preview4" />
<PackageReference Include="JT809.Protocol.Extensions.JT1078" Version="2.1.4-preview1" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.1.4" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" /> <PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
<PackageReference Include="NLog.Extensions.Logging" Version="1.6.4" /> <PackageReference Include="NLog.Extensions.Logging" Version="1.6.4" />
</ItemGroup> </ItemGroup>


+ 37
- 0
src/JTTools/JsonConvert/ByteArrayHexTextJsonConverter.cs View File

@@ -0,0 +1,37 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc.Formatters;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.Threading.Tasks;

namespace JTTools.JsonConvert
{
/// <summary>
///
/// ref:https://github.com/dotnet/corefx/blob/release/3.0/src/System.Text.Json/tests/Serialization/CustomConverterTests.Array.cs
/// </summary>
public class ByteArrayHexTextJsonConverter : JsonConverter<byte[]>
{
public override byte[] Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
//string hexJson = reader.get();
var hexJson = reader.GetString();
var list = new List<byte>();
foreach (string str in hexJson.Split(new string[] { ",", " " }, StringSplitOptions.RemoveEmptyEntries))
{
list.Add(Convert.ToByte(str, 16));
}
return list.ToArray();
}

public override void Write(Utf8JsonWriter writer, byte[] value, JsonSerializerOptions options)
{
var hexString = string.Join(" ", (value).Select(p => p.ToString("X2")));
writer.WriteStringValue(hexString);
}
}
}

+ 37
- 0
src/JTTools/Pages/_Host.cshtml View File

@@ -0,0 +1,37 @@
@page "/"
@namespace JTTools.Pages
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@{
Layout = null;
}

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="keywords" content="JT808|gb808|JT809|gb809|JT1078|JTT1078|JT19056|gb19056|在线解析工具"/>
<meta name="description" content="道路运输车辆卫星定位协议在线解析工具"/>
<title>JTTools解析工具</title>
<base href="~/" />
<link rel="stylesheet" href="css/bootstrap/bootstrap.min.css" />
<link href="css/site.css" rel="stylesheet" />
</head>
<body>
<app>
<component type="typeof(App)" render-mode="ServerPrerendered" />
</app>

<div id="blazor-error-ui">
<environment include="Staging,Production">
An error has occurred. This application may no longer respond until reloaded.
</environment>
<environment include="Development">
An unhandled exception has occurred. See browser dev tools for details.
</environment>
<a href="" class="reload">Reload</a>
<a class="dismiss">🗙</a>
</div>
<script src="_framework/blazor.server.js"></script>
</body>
</html>

+ 80
- 18
src/JTTools/Program.cs View File

@@ -4,21 +4,21 @@ using JT808.Protocol.Extensions.JT1078;
using JT808.Protocol.Extensions.JTActiveSafety; using JT808.Protocol.Extensions.JTActiveSafety;
using JT809.Protocol; using JT809.Protocol;
using JT809.Protocol.Extensions.JT1078; using JT809.Protocol.Extensions.JT1078;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Newtonsoft.Json.Serialization; using Newtonsoft.Json.Serialization;
using JTTools.Configs; using JTTools.Configs;
using BlazorStrap; using BlazorStrap;
using Newtonsoft.Json; using Newtonsoft.Json;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using System.Threading.Tasks;
using System.Net.Http;


namespace JTTools namespace JTTools
{ {
public class Program public class Program
{ {
public static async Task Main(string[] args)
public static void Main(string[] args)
{ {
Newtonsoft.Json.JsonConvert.DefaultSettings = new Func<JsonSerializerSettings>(() => Newtonsoft.Json.JsonConvert.DefaultSettings = new Func<JsonSerializerSettings>(() =>
{ {
@@ -32,21 +32,83 @@ namespace JTTools
settings.Converters.Add(new ByteArrayHexConverter()); settings.Converters.Add(new ByteArrayHexConverter());
return settings; return settings;
}); });
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.ConfigureServices((hostingContext, services) =>
{
services.AddRazorPages();
services.AddServerSideBlazor();
services.AddControllers()
//Microsoft.AspNetCore.Mvc.NewtonsoftJson
.AddNewtonsoftJson(jsonOptions =>
{
jsonOptions.SerializerSettings.Converters.Add(new ByteArrayHexConverter());
jsonOptions.SerializerSettings.ContractResolver = new DefaultContractResolver();
//jsonOptions.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;
})
//.AddJsonOptions(jsonOptions =>
//{
// jsonOptions.JsonSerializerOptions.MaxDepth = 64;


WebAssemblyHostBuilder builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("app");
builder.Services.AddBootstrapCss();
builder.Services.AddTransient(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
builder.Services.AddJT808Configure();
builder.Services.AddJT808Configure(new JT808_JTActiveSafety_Config())
.AddJTActiveSafetyConfigure();
builder.Services.AddJT808Configure(new JT808_JT1078_Config())
.AddJT1078Configure();
builder.Services.AddJT809Configure(new JT809_2011_Config())
.AddJT1078Configure();
builder.Services.AddJT809Configure(new JT809_2019_Config())
.AddJT1078Configure();
await builder.Build().RunAsync();
// jsonOptions.JsonSerializerOptions.Converters.Add(new ByteArrayHexTextJsonConverter());
//})
;
services.AddCors(options =>
options.AddPolicy("Domain", builder =>
builder.WithOrigins(hostingContext.Configuration.GetSection("AllowedOrigins").Value.Split(","))
.AllowAnyMethod()
.AllowAnyHeader()
.AllowAnyOrigin()));
services.AddBootstrapCss();
})
.ConfigureKestrel(ksOptions =>
{
ksOptions.ListenAnyIP(18888);
})
.ConfigureLogging((context, logging) => {
//if (Environment.OSVersion.Platform == PlatformID.Unix)
//{
// NLog.LogManager.LoadConfiguration("Configs/nlog.unix.config");
//}
//else
//{
// NLog.LogManager.LoadConfiguration("Configs/nlog.win.config");
//}
//logging.AddNLog(new NLogProviderOptions { CaptureMessageTemplates = true, CaptureMessageProperties = true });
//logging.SetMinimumLevel(LogLevel.Trace);
})
.ConfigureAppConfiguration((hostingContext, config) =>
{
config.SetBasePath(AppDomain.CurrentDomain.BaseDirectory);
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
})
.Configure(app => {
app.UseRouting();
app.UseCors("Domain");
app.UseStaticFiles();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapBlazorHub();
endpoints.MapFallbackToPage("/_Host");
});
});
})
.ConfigureServices(services =>
{
services.AddJT808Configure();
services.AddJT808Configure(new JT808_JTActiveSafety_Config())
.AddJTActiveSafetyConfigure();
services.AddJT808Configure(new JT808_JT1078_Config())
.AddJT1078Configure();
services.AddJT809Configure(new JT809_2011_Config())
.AddJT1078Configure();
services.AddJT809Configure(new JT809_2019_Config())
.AddJT1078Configure();
})
.Build()
.Run();
} }
} }
} }

+ 1
- 1
src/JTTools/Shared/MainLayout.razor View File

@@ -16,4 +16,4 @@
<div class="footer"> <div class="footer">
<a href="http://www.beian.miit.gov.cn" target="_blank">Copyright © 2015-2020 SmallChi. All Rights Reserved. 粤ICP备19128140号-1</a> <a href="http://www.beian.miit.gov.cn" target="_blank">Copyright © 2015-2020 SmallChi. All Rights Reserved. 粤ICP备19128140号-1</a>
</div> </div>
</div>
</div>

+ 1
- 0
src/JTTools/_Imports.razor View File

@@ -1,5 +1,6 @@
@using System.Net.Http @using System.Net.Http
@using Microsoft.AspNetCore.Authorization @using Microsoft.AspNetCore.Authorization
@using Microsoft.AspNetCore.Components.Authorization
@using Microsoft.AspNetCore.Components.Forms @using Microsoft.AspNetCore.Components.Forms
@using Microsoft.AspNetCore.Components.Routing @using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web @using Microsoft.AspNetCore.Components.Web


+ 4
- 4
src/JTTools/wwwroot/css/bootstrap/bootstrap.min.css
File diff suppressed because it is too large
View File


+ 1
- 1
src/JTTools/wwwroot/css/bootstrap/bootstrap.min.css.map
File diff suppressed because it is too large
View File


+ 2
- 0
src/JTTools/wwwroot/css/site.css View File

@@ -1,3 +1,5 @@
@import url('open-iconic/font/css/open-iconic-bootstrap.min.css');

html, body { html, body {
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
} }


Loading…
Cancel
Save