集成websocket

This commit is contained in:
wkj 2025-02-21 09:14:39 +08:00
parent 70cba4a6d8
commit a266148661
449 changed files with 102016 additions and 0 deletions

30
.dockerignore Normal file
View File

@ -0,0 +1,30 @@
**/.classpath
**/.dockerignore
**/.env
**/.git
**/.gitignore
**/.project
**/.settings
**/.toolstarget
**/.vs
**/.vscode
**/*.*proj.user
**/*.dbmdl
**/*.jfm
**/azds.yaml
**/bin
**/charts
**/docker-compose*
**/Dockerfile*
**/node_modules
**/npm-debug.log
**/obj
**/secrets.dev.yaml
**/values.dev.yaml
LICENSE
README.md
!**/.gitignore
!.git/HEAD
!.git/config
!.git/packed-refs
!.git/refs/heads/**

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.vs/

View File

@ -0,0 +1,27 @@
# 请参阅 https://aka.ms/customizecontainer 以了解如何自定义调试容器,以及 Visual Studio 如何使用此 Dockerfile 生成映像以更快地进行调试。
# 此阶段用于在快速模式(默认为调试配置)下从 VS 运行时
FROM mcr.microsoft.com/dotnet/runtime:6.0 AS base
WORKDIR /app
# 此阶段用于生成服务项目
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["WebSocketServerDemo/WebSocketServerDemo.csproj", "WebSocketServerDemo/"]
RUN dotnet restore "./WebSocketServerDemo/WebSocketServerDemo.csproj"
COPY . .
WORKDIR "/src/WebSocketServerDemo"
RUN dotnet build "./WebSocketServerDemo.csproj" -c $BUILD_CONFIGURATION -o /app/build
# 此阶段用于发布要复制到最终阶段的服务项目
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./WebSocketServerDemo.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
# 此阶段在生产中使用,或在常规模式下从 VS 运行时使用(在不使用调试配置时为默认值)
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebSocketServerDemo.dll"]

View File

@ -0,0 +1,88 @@
using TouchSocket.Core;
using TouchSocket.Http;
using TouchSocket.Http.WebSockets;
using TouchSocket.Sockets;
var service = new HttpService();
await service.SetupAsync(new TouchSocketConfig()//加载配置
.SetListenIPHosts(7789)
.ConfigureContainer(a =>
{
a.AddConsoleLogger();
})
.ConfigurePlugins(a =>
{
a.UseWebSocket()//添加WebSocket功能
.SetWSUrl("/ws")//设置url直接可以连接。
.UseAutoPong();//当收到ping报文时自动回应pong
a.Add<MyReadWebSocketPlugin>();
}));
await service.StartAsync();
service.Logger.Info("websocket服务器已启动");
Console.ReadLine();
class MyReadWebSocketPlugin : PluginBase, IWebSocketReceivedPlugin, IWebSocketHandshakedPlugin
{
private readonly ILog m_logger;
public MyReadWebSocketPlugin(ILog logger)
{
this.m_logger = logger;
}
public async Task OnWebSocketHandshaked(IWebSocket client, HttpContextEventArgs e)
{
await e.InvokeNext();
if (client.Client is IHttpSessionClient httpSessionClient)
{
var serviceStr = httpSessionClient.Id;
await client.SendAsync(serviceStr);
}
}
public async Task OnWebSocketReceived(IWebSocket client, WSDataFrameEventArgs e)
{
switch (e.DataFrame.Opcode)
{
case WSDataType.Cont:
m_logger.Info($"收到中间数据,长度为:{e.DataFrame.PayloadLength}");
return;
case WSDataType.Text:
m_logger.Info(e.DataFrame.ToText());
return;
case WSDataType.Binary:
if (e.DataFrame.FIN)
{
m_logger.Info($"收到二进制数据,长度为:{e.DataFrame.PayloadLength}");
}
else
{
m_logger.Info($"收到未结束的二进制数据,长度为:{e.DataFrame.PayloadLength}");
}
return;
case WSDataType.Close:
{
}
return;
case WSDataType.Ping:
break;
case WSDataType.Pong:
break;
default:
break;
}
await e.InvokeNext();
}
}

View File

@ -0,0 +1,10 @@
{
"profiles": {
"WebSocketServerDemo": {
"commandName": "Project"
},
"Container (Dockerfile)": {
"commandName": "Docker"
}
}
}

View File

@ -0,0 +1,16 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.21.0" />
<PackageReference Include="TouchSocket.Http" Version="3.0.14" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ActiveDebugProfile>WebSocketServerDemo</ActiveDebugProfile>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DebuggerFlavor>ProjectDebugger</DebuggerFlavor>
</PropertyGroup>
</Project>

Binary file not shown.

View File

@ -0,0 +1,191 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v6.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v6.0": {
"WebSocketServerDemo/1.0.0": {
"dependencies": {
"Microsoft.VisualStudio.Azure.Containers.Tools.Targets": "1.21.0",
"TouchSocket.Http": "3.0.14"
},
"runtime": {
"WebSocketServerDemo.dll": {}
}
},
"Microsoft.VisualStudio.Azure.Containers.Tools.Targets/1.21.0": {},
"Newtonsoft.Json/13.0.3": {
"runtime": {
"lib/net6.0/Newtonsoft.Json.dll": {
"assemblyVersion": "13.0.0.0",
"fileVersion": "13.0.3.27908"
}
}
},
"System.Memory/4.5.5": {},
"System.Runtime.CompilerServices.Unsafe/6.0.0": {},
"System.Text.Encodings.Web/8.0.0": {
"dependencies": {
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
},
"runtime": {
"lib/net6.0/System.Text.Encodings.Web.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
},
"runtimeTargets": {
"runtimes/browser/lib/net6.0/System.Text.Encodings.Web.dll": {
"rid": "browser",
"assetType": "runtime",
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"System.Text.Json/8.0.5": {
"dependencies": {
"System.Runtime.CompilerServices.Unsafe": "6.0.0",
"System.Text.Encodings.Web": "8.0.0"
},
"runtime": {
"lib/net6.0/System.Text.Json.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.1024.46610"
}
}
},
"System.Threading.Tasks.Extensions/4.5.4": {},
"TouchSocket/3.0.14": {
"dependencies": {
"TouchSocket.Core": "3.0.14"
},
"runtime": {
"lib/net6.0/TouchSocket.dll": {
"assemblyVersion": "3.0.14.0",
"fileVersion": "3.0.14.0"
}
},
"resources": {
"lib/net6.0/en-US/TouchSocket.resources.dll": {
"locale": "en-US"
}
}
},
"TouchSocket.Core/3.0.14": {
"dependencies": {
"Newtonsoft.Json": "13.0.3",
"System.Memory": "4.5.5",
"System.Text.Json": "8.0.5",
"System.Threading.Tasks.Extensions": "4.5.4"
},
"runtime": {
"lib/net6.0/TouchSocket.Core.dll": {
"assemblyVersion": "3.0.14.0",
"fileVersion": "3.0.14.0"
}
},
"resources": {
"lib/net6.0/en-US/TouchSocket.Core.resources.dll": {
"locale": "en-US"
}
}
},
"TouchSocket.Http/3.0.14": {
"dependencies": {
"TouchSocket": "3.0.14"
},
"runtime": {
"lib/net6.0/TouchSocket.Http.dll": {
"assemblyVersion": "3.0.14.0",
"fileVersion": "3.0.14.0"
}
},
"resources": {
"lib/net6.0/en-US/TouchSocket.Http.resources.dll": {
"locale": "en-US"
}
}
}
}
},
"libraries": {
"WebSocketServerDemo/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"Microsoft.VisualStudio.Azure.Containers.Tools.Targets/1.21.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-8NudeHOE56YsY59HYY89akRMup8Ho+7Y3cADTGjajjWroXVU9RQai2nA6PfteB8AuzmRHZ5NZQB2BnWhQEul5g==",
"path": "microsoft.visualstudio.azure.containers.tools.targets/1.21.0",
"hashPath": "microsoft.visualstudio.azure.containers.tools.targets.1.21.0.nupkg.sha512"
},
"Newtonsoft.Json/13.0.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==",
"path": "newtonsoft.json/13.0.3",
"hashPath": "newtonsoft.json.13.0.3.nupkg.sha512"
},
"System.Memory/4.5.5": {
"type": "package",
"serviceable": true,
"sha512": "sha512-XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==",
"path": "system.memory/4.5.5",
"hashPath": "system.memory.4.5.5.nupkg.sha512"
},
"System.Runtime.CompilerServices.Unsafe/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==",
"path": "system.runtime.compilerservices.unsafe/6.0.0",
"hashPath": "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512"
},
"System.Text.Encodings.Web/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==",
"path": "system.text.encodings.web/8.0.0",
"hashPath": "system.text.encodings.web.8.0.0.nupkg.sha512"
},
"System.Text.Json/8.0.5": {
"type": "package",
"serviceable": true,
"sha512": "sha512-0f1B50Ss7rqxXiaBJyzUu9bWFOO2/zSlifZ/UNMdiIpDYe4cY4LQQicP4nirK1OS31I43rn062UIJ1Q9bpmHpg==",
"path": "system.text.json/8.0.5",
"hashPath": "system.text.json.8.0.5.nupkg.sha512"
},
"System.Threading.Tasks.Extensions/4.5.4": {
"type": "package",
"serviceable": true,
"sha512": "sha512-zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==",
"path": "system.threading.tasks.extensions/4.5.4",
"hashPath": "system.threading.tasks.extensions.4.5.4.nupkg.sha512"
},
"TouchSocket/3.0.14": {
"type": "package",
"serviceable": true,
"sha512": "sha512-8gVdGkBI7GJf9q6gOJ3JkyeGTBT6D98tZLvbdhMIkiFlrzhpncxBWBMvx0cpeAMCmVtpv9y/KDVIIC21FuXkbw==",
"path": "touchsocket/3.0.14",
"hashPath": "touchsocket.3.0.14.nupkg.sha512"
},
"TouchSocket.Core/3.0.14": {
"type": "package",
"serviceable": true,
"sha512": "sha512-G2oU19Mq2uwIbK99RgKx9+UXrIAWzzqdzR5g07WKoMvFWIfraSzAn/ipmnom7wuzQpfMFZ4srxHTP5UUqmJK9g==",
"path": "touchsocket.core/3.0.14",
"hashPath": "touchsocket.core.3.0.14.nupkg.sha512"
},
"TouchSocket.Http/3.0.14": {
"type": "package",
"serviceable": true,
"sha512": "sha512-UJlQ7Vf94fS6i4ScPQOlcn7LUQCksJBHFpba1Rd0Kjx83MJ70hlcYuxqfbJsHzHISqZOFpGKrn8Y8Wa4QiQ8mA==",
"path": "touchsocket.http/3.0.14",
"hashPath": "touchsocket.http.3.0.14.nupkg.sha512"
}
}
}

View File

@ -0,0 +1,9 @@
{
"runtimeOptions": {
"tfm": "net6.0",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "6.0.0"
}
}
}

View File

@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")]

View File

@ -0,0 +1,23 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("WebSocketServerDemo")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("WebSocketServerDemo")]
[assembly: System.Reflection.AssemblyTitleAttribute("WebSocketServerDemo")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// 由 MSBuild WriteCodeFragment 类生成。

View File

@ -0,0 +1 @@
c632dfabe670c6f1b7561f03c473a18b23090faef18bd8a9776e4aa268ec98fd

View File

@ -0,0 +1,15 @@
is_global = true
build_property.TargetFramework = net6.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = WebSocketServerDemo
build_property.ProjectDir = D:\WorkSpace\ZhiYi\WebSocketServerDemo\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =
build_property.EffectiveAnalysisLevelStyle = 6.0
build_property.EnableCodeStyleSeverity =

View File

@ -0,0 +1,8 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Threading;
global using global::System.Threading.Tasks;

View File

@ -0,0 +1 @@
2859689639774e711f68d4465950bddeaf76eb36c0c0c1334185267013cf1239

View File

@ -0,0 +1,26 @@
D:\WorkSpace\ZhiYi\WebSocketServerDemo\bin\Debug\net6.0\WebSocketServerDemo.exe
D:\WorkSpace\ZhiYi\WebSocketServerDemo\bin\Debug\net6.0\WebSocketServerDemo.deps.json
D:\WorkSpace\ZhiYi\WebSocketServerDemo\bin\Debug\net6.0\WebSocketServerDemo.runtimeconfig.json
D:\WorkSpace\ZhiYi\WebSocketServerDemo\bin\Debug\net6.0\WebSocketServerDemo.dll
D:\WorkSpace\ZhiYi\WebSocketServerDemo\bin\Debug\net6.0\WebSocketServerDemo.pdb
D:\WorkSpace\ZhiYi\WebSocketServerDemo\bin\Debug\net6.0\Newtonsoft.Json.dll
D:\WorkSpace\ZhiYi\WebSocketServerDemo\bin\Debug\net6.0\System.Text.Encodings.Web.dll
D:\WorkSpace\ZhiYi\WebSocketServerDemo\bin\Debug\net6.0\System.Text.Json.dll
D:\WorkSpace\ZhiYi\WebSocketServerDemo\bin\Debug\net6.0\TouchSocket.dll
D:\WorkSpace\ZhiYi\WebSocketServerDemo\bin\Debug\net6.0\TouchSocket.Core.dll
D:\WorkSpace\ZhiYi\WebSocketServerDemo\bin\Debug\net6.0\TouchSocket.Http.dll
D:\WorkSpace\ZhiYi\WebSocketServerDemo\bin\Debug\net6.0\en-US\TouchSocket.resources.dll
D:\WorkSpace\ZhiYi\WebSocketServerDemo\bin\Debug\net6.0\en-US\TouchSocket.Core.resources.dll
D:\WorkSpace\ZhiYi\WebSocketServerDemo\bin\Debug\net6.0\en-US\TouchSocket.Http.resources.dll
D:\WorkSpace\ZhiYi\WebSocketServerDemo\bin\Debug\net6.0\runtimes\browser\lib\net6.0\System.Text.Encodings.Web.dll
D:\WorkSpace\ZhiYi\WebSocketServerDemo\obj\Debug\net6.0\WebSocketServerDemo.csproj.AssemblyReference.cache
D:\WorkSpace\ZhiYi\WebSocketServerDemo\obj\Debug\net6.0\WebSocketServerDemo.GeneratedMSBuildEditorConfig.editorconfig
D:\WorkSpace\ZhiYi\WebSocketServerDemo\obj\Debug\net6.0\WebSocketServerDemo.AssemblyInfoInputs.cache
D:\WorkSpace\ZhiYi\WebSocketServerDemo\obj\Debug\net6.0\WebSocketServerDemo.AssemblyInfo.cs
D:\WorkSpace\ZhiYi\WebSocketServerDemo\obj\Debug\net6.0\WebSocketServerDemo.csproj.CoreCompileInputs.cache
D:\WorkSpace\ZhiYi\WebSocketServerDemo\obj\Debug\net6.0\WebSocke.61CF1F96.Up2Date
D:\WorkSpace\ZhiYi\WebSocketServerDemo\obj\Debug\net6.0\WebSocketServerDemo.dll
D:\WorkSpace\ZhiYi\WebSocketServerDemo\obj\Debug\net6.0\refint\WebSocketServerDemo.dll
D:\WorkSpace\ZhiYi\WebSocketServerDemo\obj\Debug\net6.0\WebSocketServerDemo.pdb
D:\WorkSpace\ZhiYi\WebSocketServerDemo\obj\Debug\net6.0\WebSocketServerDemo.genruntimeconfig.cache
D:\WorkSpace\ZhiYi\WebSocketServerDemo\obj\Debug\net6.0\ref\WebSocketServerDemo.dll

View File

@ -0,0 +1 @@
4c96750ffa2c97627137739b1ca85fb6344ded8981a6f9e2be57f5e109b73134

Binary file not shown.

View File

@ -0,0 +1,84 @@
{
"format": 1,
"restore": {
"D:\\WorkSpace\\ZhiYi\\WebSocketServerDemo\\WebSocketServerDemo.csproj": {}
},
"projects": {
"D:\\WorkSpace\\ZhiYi\\WebSocketServerDemo\\WebSocketServerDemo.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "D:\\WorkSpace\\ZhiYi\\WebSocketServerDemo\\WebSocketServerDemo.csproj",
"projectName": "WebSocketServerDemo",
"projectPath": "D:\\WorkSpace\\ZhiYi\\WebSocketServerDemo\\WebSocketServerDemo.csproj",
"packagesPath": "C:\\Users\\Administrator\\.nuget\\packages\\",
"outputPath": "D:\\WorkSpace\\ZhiYi\\WebSocketServerDemo\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [
"C:\\Users\\Administrator\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net6.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"C:\\Program Files\\dotnet\\library-packs": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net6.0": {
"targetAlias": "net6.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
},
"SdkAnalysisLevel": "9.0.200"
},
"frameworks": {
"net6.0": {
"targetAlias": "net6.0",
"dependencies": {
"Microsoft.VisualStudio.Azure.Containers.Tools.Targets": {
"target": "Package",
"version": "[1.21.0, )"
},
"TouchSocket.Http": {
"target": "Package",
"version": "[3.0.14, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.200\\RuntimeIdentifierGraph.json"
}
}
}
}
}

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\Administrator\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.13.1</NuGetToolVersion>
</PropertyGroup>
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="C:\Users\Administrator\.nuget\packages\" />
<SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" />
</ItemGroup>
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)microsoft.visualstudio.azure.containers.tools.targets\1.21.0\build\Microsoft.VisualStudio.Azure.Containers.Tools.Targets.props" Condition="Exists('$(NuGetPackageRoot)microsoft.visualstudio.azure.containers.tools.targets\1.21.0\build\Microsoft.VisualStudio.Azure.Containers.Tools.Targets.props')" />
</ImportGroup>
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<PkgTouchSocket_Core Condition=" '$(PkgTouchSocket_Core)' == '' ">C:\Users\Administrator\.nuget\packages\touchsocket.core\3.0.14</PkgTouchSocket_Core>
<PkgMicrosoft_VisualStudio_Azure_Containers_Tools_Targets Condition=" '$(PkgMicrosoft_VisualStudio_Azure_Containers_Tools_Targets)' == '' ">C:\Users\Administrator\.nuget\packages\microsoft.visualstudio.azure.containers.tools.targets\1.21.0</PkgMicrosoft_VisualStudio_Azure_Containers_Tools_Targets>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)system.text.json\8.0.5\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\8.0.5\buildTransitive\net6.0\System.Text.Json.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.visualstudio.azure.containers.tools.targets\1.21.0\build\Microsoft.VisualStudio.Azure.Containers.Tools.Targets.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.visualstudio.azure.containers.tools.targets\1.21.0\build\Microsoft.VisualStudio.Azure.Containers.Tools.Targets.targets')" />
</ImportGroup>
</Project>

View File

@ -0,0 +1,687 @@
{
"version": 3,
"targets": {
"net6.0": {
"Microsoft.VisualStudio.Azure.Containers.Tools.Targets/1.21.0": {
"type": "package",
"build": {
"build/Microsoft.VisualStudio.Azure.Containers.Tools.Targets.props": {},
"build/Microsoft.VisualStudio.Azure.Containers.Tools.Targets.targets": {}
}
},
"Newtonsoft.Json/13.0.3": {
"type": "package",
"compile": {
"lib/net6.0/Newtonsoft.Json.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net6.0/Newtonsoft.Json.dll": {
"related": ".xml"
}
}
},
"System.Memory/4.5.5": {
"type": "package",
"compile": {
"ref/netcoreapp2.1/_._": {}
},
"runtime": {
"lib/netcoreapp2.1/_._": {}
}
},
"System.Runtime.CompilerServices.Unsafe/6.0.0": {
"type": "package",
"compile": {
"lib/net6.0/System.Runtime.CompilerServices.Unsafe.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net6.0/System.Runtime.CompilerServices.Unsafe.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/netcoreapp3.1/_._": {}
}
},
"System.Text.Encodings.Web/8.0.0": {
"type": "package",
"dependencies": {
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
},
"compile": {
"lib/net6.0/System.Text.Encodings.Web.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net6.0/System.Text.Encodings.Web.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net6.0/_._": {}
},
"runtimeTargets": {
"runtimes/browser/lib/net6.0/System.Text.Encodings.Web.dll": {
"assetType": "runtime",
"rid": "browser"
}
}
},
"System.Text.Json/8.0.5": {
"type": "package",
"dependencies": {
"System.Runtime.CompilerServices.Unsafe": "6.0.0",
"System.Text.Encodings.Web": "8.0.0"
},
"compile": {
"lib/net6.0/System.Text.Json.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net6.0/System.Text.Json.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net6.0/System.Text.Json.targets": {}
}
},
"System.Threading.Tasks.Extensions/4.5.4": {
"type": "package",
"compile": {
"ref/netcoreapp2.1/_._": {}
},
"runtime": {
"lib/netcoreapp2.1/_._": {}
}
},
"TouchSocket/3.0.14": {
"type": "package",
"dependencies": {
"TouchSocket.Core": "3.0.14"
},
"compile": {
"lib/net6.0/TouchSocket.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net6.0/TouchSocket.dll": {
"related": ".xml"
}
},
"resource": {
"lib/net6.0/en-US/TouchSocket.resources.dll": {
"locale": "en-US"
}
}
},
"TouchSocket.Core/3.0.14": {
"type": "package",
"dependencies": {
"Newtonsoft.Json": "13.0.3",
"System.Memory": "4.5.5",
"System.Text.Json": "8.0.5",
"System.Threading.Tasks.Extensions": "4.5.4"
},
"compile": {
"lib/net6.0/TouchSocket.Core.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net6.0/TouchSocket.Core.dll": {
"related": ".xml"
}
},
"resource": {
"lib/net6.0/en-US/TouchSocket.Core.resources.dll": {
"locale": "en-US"
}
}
},
"TouchSocket.Http/3.0.14": {
"type": "package",
"dependencies": {
"TouchSocket": "3.0.14"
},
"compile": {
"lib/net6.0/TouchSocket.Http.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net6.0/TouchSocket.Http.dll": {
"related": ".xml"
}
},
"resource": {
"lib/net6.0/en-US/TouchSocket.Http.resources.dll": {
"locale": "en-US"
}
}
}
}
},
"libraries": {
"Microsoft.VisualStudio.Azure.Containers.Tools.Targets/1.21.0": {
"sha512": "8NudeHOE56YsY59HYY89akRMup8Ho+7Y3cADTGjajjWroXVU9RQai2nA6PfteB8AuzmRHZ5NZQB2BnWhQEul5g==",
"type": "package",
"path": "microsoft.visualstudio.azure.containers.tools.targets/1.21.0",
"hasTools": true,
"files": [
".nupkg.metadata",
".signature.p7s",
"CHANGELOG.md",
"EULA.md",
"ThirdPartyNotices.txt",
"build/Container.props",
"build/Container.targets",
"build/Microsoft.VisualStudio.Azure.Containers.Tools.Targets.props",
"build/Microsoft.VisualStudio.Azure.Containers.Tools.Targets.targets",
"build/Rules/GeneralBrowseObject.xaml",
"build/Rules/cs-CZ/GeneralBrowseObject.xaml",
"build/Rules/de-DE/GeneralBrowseObject.xaml",
"build/Rules/es-ES/GeneralBrowseObject.xaml",
"build/Rules/fr-FR/GeneralBrowseObject.xaml",
"build/Rules/it-IT/GeneralBrowseObject.xaml",
"build/Rules/ja-JP/GeneralBrowseObject.xaml",
"build/Rules/ko-KR/GeneralBrowseObject.xaml",
"build/Rules/pl-PL/GeneralBrowseObject.xaml",
"build/Rules/pt-BR/GeneralBrowseObject.xaml",
"build/Rules/ru-RU/GeneralBrowseObject.xaml",
"build/Rules/tr-TR/GeneralBrowseObject.xaml",
"build/Rules/zh-CN/GeneralBrowseObject.xaml",
"build/Rules/zh-TW/GeneralBrowseObject.xaml",
"build/ToolsTarget.props",
"build/ToolsTarget.targets",
"icon.png",
"microsoft.visualstudio.azure.containers.tools.targets.1.21.0.nupkg.sha512",
"microsoft.visualstudio.azure.containers.tools.targets.nuspec",
"tools/Microsoft.VisualStudio.Containers.Tools.Common.dll",
"tools/Microsoft.VisualStudio.Containers.Tools.Shared.dll",
"tools/Microsoft.VisualStudio.Containers.Tools.Tasks.dll",
"tools/Newtonsoft.Json.dll",
"tools/System.Security.Principal.Windows.dll",
"tools/cs/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll",
"tools/cs/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll",
"tools/cs/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll",
"tools/de/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll",
"tools/de/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll",
"tools/de/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll",
"tools/es/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll",
"tools/es/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll",
"tools/es/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll",
"tools/fr/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll",
"tools/fr/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll",
"tools/fr/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll",
"tools/it/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll",
"tools/it/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll",
"tools/it/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll",
"tools/ja/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll",
"tools/ja/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll",
"tools/ja/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll",
"tools/ko/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll",
"tools/ko/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll",
"tools/ko/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll",
"tools/pl/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll",
"tools/pl/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll",
"tools/pl/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll",
"tools/pt-BR/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll",
"tools/pt-BR/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll",
"tools/pt-BR/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll",
"tools/ru/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll",
"tools/ru/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll",
"tools/ru/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll",
"tools/tr/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll",
"tools/tr/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll",
"tools/tr/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll",
"tools/zh-Hans/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll",
"tools/zh-Hans/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll",
"tools/zh-Hans/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll",
"tools/zh-Hant/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll",
"tools/zh-Hant/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll",
"tools/zh-Hant/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll"
]
},
"Newtonsoft.Json/13.0.3": {
"sha512": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==",
"type": "package",
"path": "newtonsoft.json/13.0.3",
"files": [
".nupkg.metadata",
".signature.p7s",
"LICENSE.md",
"README.md",
"lib/net20/Newtonsoft.Json.dll",
"lib/net20/Newtonsoft.Json.xml",
"lib/net35/Newtonsoft.Json.dll",
"lib/net35/Newtonsoft.Json.xml",
"lib/net40/Newtonsoft.Json.dll",
"lib/net40/Newtonsoft.Json.xml",
"lib/net45/Newtonsoft.Json.dll",
"lib/net45/Newtonsoft.Json.xml",
"lib/net6.0/Newtonsoft.Json.dll",
"lib/net6.0/Newtonsoft.Json.xml",
"lib/netstandard1.0/Newtonsoft.Json.dll",
"lib/netstandard1.0/Newtonsoft.Json.xml",
"lib/netstandard1.3/Newtonsoft.Json.dll",
"lib/netstandard1.3/Newtonsoft.Json.xml",
"lib/netstandard2.0/Newtonsoft.Json.dll",
"lib/netstandard2.0/Newtonsoft.Json.xml",
"newtonsoft.json.13.0.3.nupkg.sha512",
"newtonsoft.json.nuspec",
"packageIcon.png"
]
},
"System.Memory/4.5.5": {
"sha512": "XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==",
"type": "package",
"path": "system.memory/4.5.5",
"files": [
".nupkg.metadata",
".signature.p7s",
"LICENSE.TXT",
"THIRD-PARTY-NOTICES.TXT",
"lib/net461/System.Memory.dll",
"lib/net461/System.Memory.xml",
"lib/netcoreapp2.1/_._",
"lib/netstandard1.1/System.Memory.dll",
"lib/netstandard1.1/System.Memory.xml",
"lib/netstandard2.0/System.Memory.dll",
"lib/netstandard2.0/System.Memory.xml",
"ref/netcoreapp2.1/_._",
"system.memory.4.5.5.nupkg.sha512",
"system.memory.nuspec",
"useSharedDesignerContext.txt",
"version.txt"
]
},
"System.Runtime.CompilerServices.Unsafe/6.0.0": {
"sha512": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==",
"type": "package",
"path": "system.runtime.compilerservices.unsafe/6.0.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.targets",
"buildTransitive/netcoreapp3.1/_._",
"lib/net461/System.Runtime.CompilerServices.Unsafe.dll",
"lib/net461/System.Runtime.CompilerServices.Unsafe.xml",
"lib/net6.0/System.Runtime.CompilerServices.Unsafe.dll",
"lib/net6.0/System.Runtime.CompilerServices.Unsafe.xml",
"lib/netcoreapp3.1/System.Runtime.CompilerServices.Unsafe.dll",
"lib/netcoreapp3.1/System.Runtime.CompilerServices.Unsafe.xml",
"lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll",
"lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml",
"system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512",
"system.runtime.compilerservices.unsafe.nuspec",
"useSharedDesignerContext.txt"
]
},
"System.Text.Encodings.Web/8.0.0": {
"sha512": "yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==",
"type": "package",
"path": "system.text.encodings.web/8.0.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/System.Text.Encodings.Web.targets",
"buildTransitive/net462/_._",
"buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/System.Text.Encodings.Web.targets",
"lib/net462/System.Text.Encodings.Web.dll",
"lib/net462/System.Text.Encodings.Web.xml",
"lib/net6.0/System.Text.Encodings.Web.dll",
"lib/net6.0/System.Text.Encodings.Web.xml",
"lib/net7.0/System.Text.Encodings.Web.dll",
"lib/net7.0/System.Text.Encodings.Web.xml",
"lib/net8.0/System.Text.Encodings.Web.dll",
"lib/net8.0/System.Text.Encodings.Web.xml",
"lib/netstandard2.0/System.Text.Encodings.Web.dll",
"lib/netstandard2.0/System.Text.Encodings.Web.xml",
"runtimes/browser/lib/net6.0/System.Text.Encodings.Web.dll",
"runtimes/browser/lib/net6.0/System.Text.Encodings.Web.xml",
"runtimes/browser/lib/net7.0/System.Text.Encodings.Web.dll",
"runtimes/browser/lib/net7.0/System.Text.Encodings.Web.xml",
"runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll",
"runtimes/browser/lib/net8.0/System.Text.Encodings.Web.xml",
"system.text.encodings.web.8.0.0.nupkg.sha512",
"system.text.encodings.web.nuspec",
"useSharedDesignerContext.txt"
]
},
"System.Text.Json/8.0.5": {
"sha512": "0f1B50Ss7rqxXiaBJyzUu9bWFOO2/zSlifZ/UNMdiIpDYe4cY4LQQicP4nirK1OS31I43rn062UIJ1Q9bpmHpg==",
"type": "package",
"path": "system.text.json/8.0.5",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"analyzers/dotnet/roslyn3.11/cs/System.Text.Json.SourceGeneration.dll",
"analyzers/dotnet/roslyn3.11/cs/cs/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/de/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/es/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/fr/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/it/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/ja/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/ko/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/pl/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/ru/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/tr/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/System.Text.Json.SourceGeneration.dll",
"analyzers/dotnet/roslyn4.0/cs/cs/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/de/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/es/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/fr/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/it/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/ja/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/ko/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/pl/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/ru/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/tr/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/System.Text.Json.SourceGeneration.dll",
"analyzers/dotnet/roslyn4.4/cs/cs/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/de/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/es/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/fr/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/it/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/ja/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/ko/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/pl/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/ru/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/tr/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll",
"buildTransitive/net461/System.Text.Json.targets",
"buildTransitive/net462/System.Text.Json.targets",
"buildTransitive/net6.0/System.Text.Json.targets",
"buildTransitive/netcoreapp2.0/System.Text.Json.targets",
"buildTransitive/netstandard2.0/System.Text.Json.targets",
"lib/net462/System.Text.Json.dll",
"lib/net462/System.Text.Json.xml",
"lib/net6.0/System.Text.Json.dll",
"lib/net6.0/System.Text.Json.xml",
"lib/net7.0/System.Text.Json.dll",
"lib/net7.0/System.Text.Json.xml",
"lib/net8.0/System.Text.Json.dll",
"lib/net8.0/System.Text.Json.xml",
"lib/netstandard2.0/System.Text.Json.dll",
"lib/netstandard2.0/System.Text.Json.xml",
"system.text.json.8.0.5.nupkg.sha512",
"system.text.json.nuspec",
"useSharedDesignerContext.txt"
]
},
"System.Threading.Tasks.Extensions/4.5.4": {
"sha512": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==",
"type": "package",
"path": "system.threading.tasks.extensions/4.5.4",
"files": [
".nupkg.metadata",
".signature.p7s",
"LICENSE.TXT",
"THIRD-PARTY-NOTICES.TXT",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net461/System.Threading.Tasks.Extensions.dll",
"lib/net461/System.Threading.Tasks.Extensions.xml",
"lib/netcoreapp2.1/_._",
"lib/netstandard1.0/System.Threading.Tasks.Extensions.dll",
"lib/netstandard1.0/System.Threading.Tasks.Extensions.xml",
"lib/netstandard2.0/System.Threading.Tasks.Extensions.dll",
"lib/netstandard2.0/System.Threading.Tasks.Extensions.xml",
"lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll",
"lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.xml",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/netcoreapp2.1/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.threading.tasks.extensions.4.5.4.nupkg.sha512",
"system.threading.tasks.extensions.nuspec",
"useSharedDesignerContext.txt",
"version.txt"
]
},
"TouchSocket/3.0.14": {
"sha512": "8gVdGkBI7GJf9q6gOJ3JkyeGTBT6D98tZLvbdhMIkiFlrzhpncxBWBMvx0cpeAMCmVtpv9y/KDVIIC21FuXkbw==",
"type": "package",
"path": "touchsocket/3.0.14",
"files": [
".nupkg.metadata",
".signature.p7s",
"LICENSE.txt",
"lib/net45/TouchSocket.dll",
"lib/net45/TouchSocket.xml",
"lib/net45/en-US/TouchSocket.resources.dll",
"lib/net462/TouchSocket.dll",
"lib/net462/TouchSocket.xml",
"lib/net462/en-US/TouchSocket.resources.dll",
"lib/net472/TouchSocket.dll",
"lib/net472/TouchSocket.xml",
"lib/net472/en-US/TouchSocket.resources.dll",
"lib/net481/TouchSocket.dll",
"lib/net481/TouchSocket.xml",
"lib/net481/en-US/TouchSocket.resources.dll",
"lib/net6.0/TouchSocket.dll",
"lib/net6.0/TouchSocket.xml",
"lib/net6.0/en-US/TouchSocket.resources.dll",
"lib/net8.0/TouchSocket.dll",
"lib/net8.0/TouchSocket.xml",
"lib/net8.0/en-US/TouchSocket.resources.dll",
"lib/net9.0/TouchSocket.dll",
"lib/net9.0/TouchSocket.xml",
"lib/net9.0/en-US/TouchSocket.resources.dll",
"lib/netstandard2.0/TouchSocket.dll",
"lib/netstandard2.0/TouchSocket.xml",
"lib/netstandard2.0/en-US/TouchSocket.resources.dll",
"lib/netstandard2.1/TouchSocket.dll",
"lib/netstandard2.1/TouchSocket.xml",
"lib/netstandard2.1/en-US/TouchSocket.resources.dll",
"logo.png",
"touchsocket.3.0.14.nupkg.sha512",
"touchsocket.nuspec"
]
},
"TouchSocket.Core/3.0.14": {
"sha512": "G2oU19Mq2uwIbK99RgKx9+UXrIAWzzqdzR5g07WKoMvFWIfraSzAn/ipmnom7wuzQpfMFZ4srxHTP5UUqmJK9g==",
"type": "package",
"path": "touchsocket.core/3.0.14",
"hasTools": true,
"files": [
".nupkg.metadata",
".signature.p7s",
"LICENSE.txt",
"analyzers/dotnet/cs/TouchSocket.Core.SourceGenerator.dll",
"lib/net45/TouchSocket.Core.dll",
"lib/net45/TouchSocket.Core.xml",
"lib/net45/en-US/TouchSocket.Core.resources.dll",
"lib/net462/TouchSocket.Core.dll",
"lib/net462/TouchSocket.Core.xml",
"lib/net462/en-US/TouchSocket.Core.resources.dll",
"lib/net472/TouchSocket.Core.dll",
"lib/net472/TouchSocket.Core.xml",
"lib/net472/en-US/TouchSocket.Core.resources.dll",
"lib/net481/TouchSocket.Core.dll",
"lib/net481/TouchSocket.Core.xml",
"lib/net481/en-US/TouchSocket.Core.resources.dll",
"lib/net6.0/TouchSocket.Core.dll",
"lib/net6.0/TouchSocket.Core.xml",
"lib/net6.0/en-US/TouchSocket.Core.resources.dll",
"lib/net8.0/TouchSocket.Core.dll",
"lib/net8.0/TouchSocket.Core.xml",
"lib/net8.0/en-US/TouchSocket.Core.resources.dll",
"lib/net9.0/TouchSocket.Core.dll",
"lib/net9.0/TouchSocket.Core.xml",
"lib/net9.0/en-US/TouchSocket.Core.resources.dll",
"lib/netstandard2.0/TouchSocket.Core.dll",
"lib/netstandard2.0/TouchSocket.Core.xml",
"lib/netstandard2.0/en-US/TouchSocket.Core.resources.dll",
"lib/netstandard2.1/TouchSocket.Core.dll",
"lib/netstandard2.1/TouchSocket.Core.xml",
"lib/netstandard2.1/en-US/TouchSocket.Core.resources.dll",
"logo.png",
"tools/install.ps1",
"tools/uninstall.ps1",
"touchsocket.core.3.0.14.nupkg.sha512",
"touchsocket.core.nuspec"
]
},
"TouchSocket.Http/3.0.14": {
"sha512": "UJlQ7Vf94fS6i4ScPQOlcn7LUQCksJBHFpba1Rd0Kjx83MJ70hlcYuxqfbJsHzHISqZOFpGKrn8Y8Wa4QiQ8mA==",
"type": "package",
"path": "touchsocket.http/3.0.14",
"files": [
".nupkg.metadata",
".signature.p7s",
"LICENSE.txt",
"lib/net45/TouchSocket.Http.dll",
"lib/net45/TouchSocket.Http.xml",
"lib/net45/en-US/TouchSocket.Http.resources.dll",
"lib/net462/TouchSocket.Http.dll",
"lib/net462/TouchSocket.Http.xml",
"lib/net462/en-US/TouchSocket.Http.resources.dll",
"lib/net472/TouchSocket.Http.dll",
"lib/net472/TouchSocket.Http.xml",
"lib/net472/en-US/TouchSocket.Http.resources.dll",
"lib/net481/TouchSocket.Http.dll",
"lib/net481/TouchSocket.Http.xml",
"lib/net481/en-US/TouchSocket.Http.resources.dll",
"lib/net6.0/TouchSocket.Http.dll",
"lib/net6.0/TouchSocket.Http.xml",
"lib/net6.0/en-US/TouchSocket.Http.resources.dll",
"lib/net8.0/TouchSocket.Http.dll",
"lib/net8.0/TouchSocket.Http.xml",
"lib/net8.0/en-US/TouchSocket.Http.resources.dll",
"lib/net9.0/TouchSocket.Http.dll",
"lib/net9.0/TouchSocket.Http.xml",
"lib/net9.0/en-US/TouchSocket.Http.resources.dll",
"lib/netstandard2.0/TouchSocket.Http.dll",
"lib/netstandard2.0/TouchSocket.Http.xml",
"lib/netstandard2.0/en-US/TouchSocket.Http.resources.dll",
"lib/netstandard2.1/TouchSocket.Http.dll",
"lib/netstandard2.1/TouchSocket.Http.xml",
"lib/netstandard2.1/en-US/TouchSocket.Http.resources.dll",
"logo.png",
"touchsocket.http.3.0.14.nupkg.sha512",
"touchsocket.http.nuspec"
]
}
},
"projectFileDependencyGroups": {
"net6.0": [
"Microsoft.VisualStudio.Azure.Containers.Tools.Targets >= 1.21.0",
"TouchSocket.Http >= 3.0.14"
]
},
"packageFolders": {
"C:\\Users\\Administrator\\.nuget\\packages\\": {},
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {}
},
"project": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "D:\\WorkSpace\\ZhiYi\\WebSocketServerDemo\\WebSocketServerDemo.csproj",
"projectName": "WebSocketServerDemo",
"projectPath": "D:\\WorkSpace\\ZhiYi\\WebSocketServerDemo\\WebSocketServerDemo.csproj",
"packagesPath": "C:\\Users\\Administrator\\.nuget\\packages\\",
"outputPath": "D:\\WorkSpace\\ZhiYi\\WebSocketServerDemo\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [
"C:\\Users\\Administrator\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net6.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"C:\\Program Files\\dotnet\\library-packs": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net6.0": {
"targetAlias": "net6.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
},
"SdkAnalysisLevel": "9.0.200"
},
"frameworks": {
"net6.0": {
"targetAlias": "net6.0",
"dependencies": {
"Microsoft.VisualStudio.Azure.Containers.Tools.Targets": {
"target": "Package",
"version": "[1.21.0, )"
},
"TouchSocket.Http": {
"target": "Package",
"version": "[3.0.14, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.200\\RuntimeIdentifierGraph.json"
}
}
}
}

View File

@ -0,0 +1,19 @@
{
"version": 2,
"dgSpecHash": "xpqtCo2lwTo=",
"success": true,
"projectFilePath": "D:\\WorkSpace\\ZhiYi\\WebSocketServerDemo\\WebSocketServerDemo.csproj",
"expectedPackageFiles": [
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.visualstudio.azure.containers.tools.targets\\1.21.0\\microsoft.visualstudio.azure.containers.tools.targets.1.21.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\newtonsoft.json\\13.0.3\\newtonsoft.json.13.0.3.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.memory\\4.5.5\\system.memory.4.5.5.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.0.0\\system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.text.encodings.web\\8.0.0\\system.text.encodings.web.8.0.0.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.text.json\\8.0.5\\system.text.json.8.0.5.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\system.threading.tasks.extensions\\4.5.4\\system.threading.tasks.extensions.4.5.4.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\touchsocket\\3.0.14\\touchsocket.3.0.14.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\touchsocket.core\\3.0.14\\touchsocket.core.3.0.14.nupkg.sha512",
"C:\\Users\\Administrator\\.nuget\\packages\\touchsocket.http\\3.0.14\\touchsocket.http.3.0.14.nupkg.sha512"
],
"logs": []
}

58
ZhiYi.Core.Api.sln Normal file
View File

@ -0,0 +1,58 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.13.35806.99
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZhiYi.Core.Api", "ZhiYi.Core.Api\ZhiYi.Core.Api.csproj", "{C7476179-20D6-4B0E-9421-720648B81107}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZhiYi.Core.Application", "ZhiYi.Core.Application\ZhiYi.Core.Application.csproj", "{B05B7AEC-7556-4229-9A38-0CA37F1188D4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZhiYi.Core.Repository", "ZhiYi.Core.Repository\ZhiYi.Core.Repository.csproj", "{7A4D462B-2616-47E7-9520-1CE9049F9CCB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZhiYi.Core.Grpc.Service.Api", "ZhiYi.Core.Grpc.Service.Api\ZhiYi.Core.Grpc.Service.Api.csproj", "{020AA9A3-AB79-4F1E-95FD-B2B3264EAF59}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ZhiYi.Core.Service", "ZhiYi.Core.Service", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebSocketServerDemo", "WebSocketServerDemo\WebSocketServerDemo.csproj", "{891D6EDF-8340-4698-A475-5A23CA42E2A0}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{C7476179-20D6-4B0E-9421-720648B81107}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C7476179-20D6-4B0E-9421-720648B81107}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C7476179-20D6-4B0E-9421-720648B81107}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C7476179-20D6-4B0E-9421-720648B81107}.Release|Any CPU.Build.0 = Release|Any CPU
{B05B7AEC-7556-4229-9A38-0CA37F1188D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B05B7AEC-7556-4229-9A38-0CA37F1188D4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B05B7AEC-7556-4229-9A38-0CA37F1188D4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B05B7AEC-7556-4229-9A38-0CA37F1188D4}.Release|Any CPU.Build.0 = Release|Any CPU
{7A4D462B-2616-47E7-9520-1CE9049F9CCB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7A4D462B-2616-47E7-9520-1CE9049F9CCB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7A4D462B-2616-47E7-9520-1CE9049F9CCB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7A4D462B-2616-47E7-9520-1CE9049F9CCB}.Release|Any CPU.Build.0 = Release|Any CPU
{020AA9A3-AB79-4F1E-95FD-B2B3264EAF59}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{020AA9A3-AB79-4F1E-95FD-B2B3264EAF59}.Debug|Any CPU.Build.0 = Debug|Any CPU
{020AA9A3-AB79-4F1E-95FD-B2B3264EAF59}.Release|Any CPU.ActiveCfg = Release|Any CPU
{020AA9A3-AB79-4F1E-95FD-B2B3264EAF59}.Release|Any CPU.Build.0 = Release|Any CPU
{891D6EDF-8340-4698-A475-5A23CA42E2A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{891D6EDF-8340-4698-A475-5A23CA42E2A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{891D6EDF-8340-4698-A475-5A23CA42E2A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{891D6EDF-8340-4698-A475-5A23CA42E2A0}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{C7476179-20D6-4B0E-9421-720648B81107} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
{B05B7AEC-7556-4229-9A38-0CA37F1188D4} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
{7A4D462B-2616-47E7-9520-1CE9049F9CCB} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
{020AA9A3-AB79-4F1E-95FD-B2B3264EAF59} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
{891D6EDF-8340-4698-A475-5A23CA42E2A0} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {CABDBACA-2A29-4DBF-80A5-6BFE48423A36}
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,30 @@

namespace ZhiYi.Core.Api.Controllers
{
/// <summary>
/// 验证码管理
/// </summary>
[Route("api/captcha/[action]")]
[ApiController]
public class CaptchaController : ControllerBase
{
private readonly ICaptchaAppService _captchaAppService;
/// <summary>
///
/// </summary>
/// <param name="captchaAppService"></param>
public CaptchaController(ICaptchaAppService captchaAppService)
{
_captchaAppService = captchaAppService;
}
/// <summary>
/// 获取验证码
/// </summary>
/// <returns></returns>
[HttpGet]
public async Task<ActionResult<CaptchaResponseDto>> GetCaptchaAsync()
=> await _captchaAppService.GetCaptchaAsync();
}
}

View File

@ -0,0 +1,52 @@

namespace ZhiYi.Core.Api.Controllers
{
/// <summary>
/// 组管理
/// </summary>
[Route("api/group/[action]")]
[ApiController]
public class GroupController : ControllerBase
{
private readonly IGroupAppService _groupAppService;
public GroupController(IGroupAppService groupAppService)
{
_groupAppService = groupAppService;
}
/// <summary>
/// 创建组
/// </summary>
/// <returns></returns>
[HttpPost]
public async Task CreateAsync([FromBody] GroupCreationDto input)
=> await _groupAppService.CreateAsync(input);
/// <summary>
/// 更改组名
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
public async Task UpdateAsync([FromBody] GroupUpdationDto input)
=> await _groupAppService.UpdateAsync(input);
/// <summary>
/// 删除组
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
public async Task DeleteAsync([FromBody]GroupDeleteDto input)
=> await _groupAppService.DeleteAsync(input);
/// <summary>
/// 获取组列表
/// </summary>
/// <param name="userid">账号ID</param>
/// <returns></returns>
[HttpGet]
public async Task<AppResponse<List<ZhiYi_Group>>> GetListAsync([FromQuery] long userid)
=> await _groupAppService.GetListAsync(userid);
}
}

View File

@ -0,0 +1,53 @@
using ZhiYi.Core.Application.Dtos.Server;
namespace ZhiYi.Core.Api.Controllers
{
/// <summary>
/// 服务器管理
/// </summary>
[Route("api/server/[action]")]
[ApiController]
public class ServerController : ControllerBase
{
private readonly IServerAppService _serverAppService;
public ServerController(IServerAppService serverAppService)
{
_serverAppService = serverAppService;
}
/// <summary>
/// 创建服务器
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
public async Task CreateAsync([FromBody] ServerCreationDto input)
=> await _serverAppService.CreateAsync(input);
/// <summary>
/// 更新服务器
/// </summary>
/// <returns></returns>
[HttpPost]
public async Task UpdateAsync(ServerUpdationDto input)
=> await _serverAppService.UpdateAsync(input);
/// <summary>
/// 删除服务器
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
public async Task DeleteAsync([FromBody]ServerDeleteDto input)
=> await _serverAppService.DeleteAsync(input);
/// <summary>
/// 获取服务器列表
/// </summary>
/// <param name="groupid">组ID</param>
/// <returns></returns>
[HttpGet]
public async Task<ActionResult<AppResponse<List<ZhiYi_Server>>>> GetListAsync([FromQuery]long groupid)
=> await _serverAppService.GetListAsync(groupid);
}
}

View File

@ -0,0 +1,55 @@

namespace ZhiYi.Core.Api.Controllers
{
/// <summary>
/// 分享管理
/// </summary>
[Route("api/[action]")]
[ApiController]
public class SharedController : ControllerBase
{
private readonly ISharedAppService _sharedAppService;
public SharedController(ISharedAppService sharedAppService)
{
_sharedAppService = sharedAppService;
}
/// <summary>
/// 创建分享
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
public async Task<AppResponse<string>> CreateAsync([FromBody] SharedCreationDto input)
=> await _sharedAppService.CreateAsync(input);
/// <summary>
/// 获取个人分享列表
/// </summary>
/// <param name="id">分享账号ID</param>
/// <returns></returns>
[HttpGet]
public async Task<AppResponse<List<SharedDto>>> GetListAsync([FromQuery]long id)
=> await _sharedAppService.GetListAsync(id);
/// <summary>
/// 使用分享码
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
public async Task UseShared([FromBody] UseSharedCodeDto input)
=> await _sharedAppService.UseShared(input);
/// <summary>
/// 批量删除分享码
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
public async Task DeleteBatchAsync(SharedDeleteDto input)
=> await _sharedAppService.DeleteBatchAsync(input);
}
}

View File

@ -0,0 +1,57 @@

namespace ZhiYi.Core.Api.Controllers
{
/// <summary>
/// 用户管理
/// </summary>
[Route("api/user/[action]")]
[ApiController]
public class UserController : ControllerBase
{
private readonly IUserAppService _userAppService;
/// <summary>
///
/// </summary>
/// <param name="userAppService"></param>
public UserController(IUserAppService userAppService)
{
_userAppService = userAppService;
}
/// <summary>
/// 验证码登录
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
public async Task<ActionResult<LoginResponseDto>> LoginAsync([FromBody] UserLoginDto input)
=> await _userAppService.LoginAsync(input);
/// <summary>
/// 注册
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
public async Task RegisterAsync([FromBody] UserCreationDto input)
=> await _userAppService.RegisterAsync(input);
/// <summary>
/// 用户列表
/// </summary>
/// <returns></returns>
[HttpGet]
public async Task<ActionResult<object>> UserList()
=> await _userAppService.GetUserAsync();
/// <summary>
/// 获取签名
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
public async Task<ActionResult<string>> GetSignature([FromBody]SignatureCreationDto input)
=> await _userAppService.GetSignature(input);
}
}

30
ZhiYi.Core.Api/Dockerfile Normal file
View File

@ -0,0 +1,30 @@
# 请参阅 https://aka.ms/customizecontainer 以了解如何自定义调试容器,以及 Visual Studio 如何使用此 Dockerfile 生成映像以更快地进行调试。
# 此阶段用于在快速模式(默认为调试配置)下从 VS 运行时
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
# 此阶段用于生成服务项目
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["ZhiYi.Core.Api/ZhiYi.Core.Api.csproj", "ZhiYi.Core.Api/"]
COPY ["ZhiYi.Core.Application/ZhiYi.Core.Application.csproj", "ZhiYi.Core.Application/"]
COPY ["ZhiYi.Core.Repository/ZhiYi.Core.Repository.csproj", "ZhiYi.Core.Repository/"]
RUN dotnet restore "./ZhiYi.Core.Api/ZhiYi.Core.Api.csproj"
COPY . .
WORKDIR "/src/ZhiYi.Core.Api"
RUN dotnet build "./ZhiYi.Core.Api.csproj" -c $BUILD_CONFIGURATION -o /app/build
# 此阶段用于发布要复制到最终阶段的服务项目
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./ZhiYi.Core.Api.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
# 此阶段在生产中使用,或在常规模式下从 VS 运行时使用(在不使用调试配置时为默认值)
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "ZhiYi.Core.Api.dll"]

View File

@ -0,0 +1,25 @@
global using Microsoft.AspNetCore.Authentication.JwtBearer;
global using Microsoft.AspNetCore.Mvc;
global using Microsoft.IdentityModel.Tokens;
global using Microsoft.OpenApi.Models;
global using NLog;
global using NLog.Web;
global using StackExchange.Redis;
global using System.Text;
global using ZhiYi.Core.Application.Captcha;
global using ZhiYi.Core.Application.Dtos;
global using ZhiYi.Core.Application.Filter;
global using ZhiYi.Core.Application.Middleware;
global using ZhiYi.Core.Application.Services;
global using ZhiYi.Core.Application.Services.Implements;
global using Grpc.Core;
global using ZhiYi.Core.Api.GrpcService.Protos.CaptchaServerProtobufs;
global using ZhiYi.Core.Application.Dtos.Group;
global using ZhiYi.Core.Repository.Entities;
global using ZhiYi.Core.Application.Dtos.Shared;
global using System.Reflection;
global using TouchSocket.Core;
global using TouchSocket.Http;
global using TouchSocket.Sockets;
global using ZhiYi.Core.Api.GrpcService.Services;

View File

@ -0,0 +1,22 @@
syntax = "proto3";
option csharp_namespace = "ZhiYi.Core.Api.GrpcService.Protos.CaptchaServerProtobufs";
package signservice;
//»ñÈ¡Ç©
service SignatureService {
rpc GetSignatureService(GetSignatureRequest) returns (GetSignatureResponse);
}
message GetSignatureRequest{
string app_secret = 1; //ÃÜÔ¿
string path = 2; //ÇëÇó·ÓÉ
string access_token = 3; //ÁîÅÆ
}
//»ñÈ¡Ç©ÃûÏìÓ¦¨Òå
message GetSignatureResponse{
string sign_str = 1;
}

View File

@ -0,0 +1,22 @@

using Microsoft.AspNetCore.Authorization;
namespace ZhiYi.Core.Api.GrpcService.Services
{
public class CaptchaGrpcService : SignatureService.SignatureServiceBase
{
private readonly IUserAppService _userAppService;
public CaptchaGrpcService(IUserAppService userAppService)
{
_userAppService = userAppService;
}
[AllowAnonymous]
public override async Task<GetSignatureResponse> GetSignatureService(GetSignatureRequest request, ServerCallContext context)
{
var signatureCreationDto = new SignatureCreationDto { AppSecret = request.AppSecret, Path = request.Path, Token = request.AccessToken };
var str = await _userAppService.GetSignature(signatureCreationDto);
return new GetSignatureResponse { SignStr = str };
}
}
}

150
ZhiYi.Core.Api/Program.cs Normal file
View File

@ -0,0 +1,150 @@
using ZhiYi.Core.Application.WebSocket;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers(option =>
{
option.Filters.Add<CustomExceptionFilterAttribute>();
})
.AddJsonOptions(jsonOption =>
{
jsonOption.JsonSerializerOptions.PropertyNamingPolicy = null; //禁用小驼峰,实体返回时保持原有大小写格式
});
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
//grpc
builder.Services.AddGrpc();
builder.Services.AddAutoMapper(Assembly.GetExecutingAssembly());
builder.Services.AddEndpointsApiExplorer();
var startAssembly = Assembly.GetExecutingAssembly();
builder.Services.AddSwaggerGen(c =>
{
var startAssemblyName = startAssembly.GetName().Name;
if (string.IsNullOrEmpty(startAssemblyName))
throw new NullReferenceException(nameof(startAssemblyName));
var lastName = startAssemblyName.Split('.').Last();
var apiLayerXmlFilePath = Path.Combine(AppContext.BaseDirectory, $"{startAssemblyName}.xml");
var applicationContractsLayerXmlFilePath = Path.Combine(AppContext.BaseDirectory, $"{startAssemblyName.Replace($".{lastName}", ".Application.Contracts")}.xml");
var applicationLayerXmlFilePath = Path.Combine(AppContext.BaseDirectory, $"{startAssemblyName.Replace($".{lastName}", ".Application")}.xml");
c.IncludeXmlComments(apiLayerXmlFilePath, true);
if (File.Exists(applicationContractsLayerXmlFilePath))
{
c.IncludeXmlComments(applicationContractsLayerXmlFilePath, true);
}
else if (File.Exists(applicationLayerXmlFilePath))
{
c.IncludeXmlComments(applicationLayerXmlFilePath, true);
}
c.SwaggerDoc("v1", new OpenApiInfo { Title = "API", Version = "v1" });
// 添加 JWT 认证支持
c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
{
Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
Name = "Authorization",
In = ParameterLocation.Header,
Type = SecuritySchemeType.ApiKey,
Scheme = "Bearer"
});
c.AddSecurityRequirement(new OpenApiSecurityRequirement
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference
{
Type = ReferenceType.SecurityScheme,
Id = "Bearer"
}
},
Array.Empty<string>()
}
});
});
// 注册 Redis 连接
var constr = builder.Configuration["ConnectionStrings:Redis"];
builder.Services.AddSingleton<IConnectionMultiplexer>(provider =>
{
var configuration = ConfigurationOptions.Parse(constr);
return ConnectionMultiplexer.Connect(configuration);
});
builder.Services.AddSingleton<IUserAppService, UserAppService>();
builder.Services.AddSingleton<IServerAppService, ServerAppService>();
builder.Services.AddSingleton<IGroupAppService, GroupAppService>();
builder.Services.AddSingleton<ICaptchaAppService, CaptchaAppService>();
builder.Services.AddSingleton<IConnectionClientManagerService, ConnectionClientManagerService>();
builder.Services.AddScoped<CaptchaService>();
builder.Services.AddScoped<TokenService>();
builder.Configuration.AddJsonFile($"{AppContext.BaseDirectory}/appsettings.{builder.Environment.EnvironmentName}.json", true, true);
/*builder.Services.AddAutoMapper(config =>
{
config.AddProfile(new MappingProfile()); // 如果您有一个通用的配置方法
}, typeof(YourApplicationNamespace.MappingProfile).Assembly);*/
//跨域
builder.Services.AddCors(options =>
{
options.AddPolicy("AllowSpecificOrigin",
builder => builder.WithOrigins("http://localhost:8080") // 允许的源
.AllowAnyMethod() // 允许的方法
.AllowAnyHeader() // 允许的头部
.AllowCredentials()); // 允许携带凭证
});
//鉴权配置
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = builder.Configuration["Jwt:Issuer"],
ValidAudience = builder.Configuration["Jwt:Audience"],
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"]))
};
});
//日志
builder.Logging.ClearProviders();
LogManager.LoadConfiguration($"{AppContext.BaseDirectory}/nlog.config");
builder.Host.UseNLog();
var app = builder.Build();
app.UseCors("AllowSpecificOrigin");
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.MapGrpcService<CaptchaGrpcService>();
app.UseAuthentication();
//注册签名/认证中间件
app.UseMiddleware<SignatureValidationMiddleware>();
//app.UseAuthentication(appBuilder => appBuilder Disabled = true)
app.UseStaticFiles();
var serviceManger = app.Services.GetRequiredService<IConnectionClientManagerService>();
//websocket服务
var service = new HttpService();
await service.SetupAsync(new TouchSocketConfig()//加载配置
.SetListenIPHosts(6088)
.ConfigureContainer(a =>
{
a.AddConsoleLogger();
})
.ConfigurePlugins(a =>
{
a.UseWebSocket()//添加WebSocket功能
.SetWSUrl("/ws")//设置url直接可以连接。
.UseAutoPong();//当收到ping报文时自动回应pong
a.Add(new WebSocketPlugin(serviceManger));
}));
await service.StartAsync();
service.Logger.Info("websocket服务器已启动");
app.MapControllers();
app.Run();

View File

@ -0,0 +1,41 @@
{
"profiles": {
"ZhiYi.Core.Api": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"dotnetRunMessages": true,
"applicationUrl": "http://localhost:5088"
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
//"Container (Dockerfile)": {
// "commandName": "Docker",
// "launchBrowser": true,
// "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger",
// "environmentVariables": {
// "ASPNETCORE_URLS": "http://+:80"
// },
// "publishAllPorts": true,
// "useSSL": false
//}
},
"$schema": "https://json.schemastore.org/launchsettings.json",
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:7259",
"sslPort": 0
}
}
}

View File

@ -0,0 +1,47 @@
using static ZhiYi.Core.Api.ServerConfig.KestrelOptions.Endpoint;
namespace ZhiYi.Core.Api.ServerConfig
{
public class KestrelOptions
{
/// <summary>
/// Gets or sets the endpoints for the Kestrel server.
/// </summary>
public IDictionary<string, Endpoint> Endpoints { get; init; } = new Dictionary<string, Endpoint>();
/// <summary>
/// 文件大小限制配置
/// </summary>
public KestrelLimitsOptions Limits { get; set; }
/// <summary>
/// Represents an endpoint for the Kestrel server.
/// </summary>
public class Endpoint
{
private const string DefaultProtocols = "Http1AndHttp2";
/// <summary>
/// The URL associated with the endpoint.
/// </summary>
public string Url { get; set; } = string.Empty;
/// <summary>
/// The protocols associated with the endpoint. Defaults to "Http1AndHttp2" if not specified.
/// </summary>
public string Protocols { get; set; } = DefaultProtocols;
/// <summary>
/// Initializes a new instance of the <see cref="Endpoint"/> class.
/// </summary>
public Endpoint()
{
}
public class KestrelLimitsOptions
{
public long MaxRequestBodySize { get; set; }
}
}
}
}

View File

@ -0,0 +1,33 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<GenerateDocumentationFile>True</GenerateDocumentationFile>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<NoWarn>$(NoWarn);1591</NoWarn>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="AutoMapper" Version="11.0.0" />
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="11.0.0" />
<PackageReference Include="Grpc.AspNetCore" Version="2.47.0" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.36" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.21.0" />
<PackageReference Include="NLog.Web.AspNetCore" Version="5.0.0" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
<PackageReference Include="TouchSocket.Http" Version="3.0.14" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ZhiYi.Core.Application\ZhiYi.Core.Application.csproj" />
</ItemGroup>
<ItemGroup>
<Protobuf Include="GrpcService\Protos\captcha.proto" GrpcServices="Server" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Controller_SelectedScaffolderID>MvcControllerEmptyScaffolder</Controller_SelectedScaffolderID>
<Controller_SelectedScaffolderCategoryPath>root/Common/MVC/Controller</Controller_SelectedScaffolderCategoryPath>
<ActiveDebugProfile>ZhiYi.Core.Api</ActiveDebugProfile>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DebuggerFlavor>ProjectDebugger</DebuggerFlavor>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,32 @@
{
"ConnectionStrings": {
//"SqlConnection": "data source=127.0.0.1;initial catalog=zhiyi;persist security info=False;user id=postgres;password=123456;packet size=4096",
//"SqlConnection": "postgresql://postgres:123456@127.0.0.1:5432/zhiyi",
"SqlConnection": "PORT=5432;DATABASE=zhiyi;HOST=127.0.0.1;PASSWORD=123456;USER ID=postgres",
"Redis": "127.0.0.1:6379,password=,abortConnect=False,ssl=False,connectTimeout=5000,connectRetry=3"
},
"Jwt": {
"Key": "zhiyi_jwt_secret_key_zhiyi_jwt_secret_key",
"Issuer": "AuthApp",
"Audience": "AuthAppUsers",
"ExpiryInMinutes": 30
},
"AppSecret": "zhiyi_wkj",
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"Kestrel": {
"Endpoints": {
"Default": {
"Url": "http://0.0.0.0:5088"
},
"Grpc": {
"Url": "http://0.0.0.0:5089",
"Protocols": "Http2"
}
}
}
}

View File

@ -0,0 +1,9 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More