升级到net6.0
This commit is contained in:
parent
013b6ea4db
commit
7fe07b104c
@ -41,7 +41,7 @@ namespace Infrastructure
|
||||
{
|
||||
str = Guid.NewGuid().ToString();
|
||||
}
|
||||
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
|
||||
MD5 md5 = MD5.Create();
|
||||
return BitConverter.ToString(md5.ComputeHash(Encoding.Default.GetBytes(str)), 4, 8).Replace("-", "");
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
@ -11,7 +11,7 @@
|
||||
<ItemGroup>
|
||||
<PackageReference Include="AspectCore.Abstractions" Version="2.2.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.2.7" />
|
||||
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="5.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="6.0.0" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
@ -9,12 +9,12 @@ namespace Infrastructure
|
||||
/// <summary>
|
||||
/// 应用服务
|
||||
/// </summary>
|
||||
internal static IServiceCollection InternalServices;
|
||||
public static IServiceCollection InternalServices;
|
||||
|
||||
/// <summary>
|
||||
/// 全局配置构建器
|
||||
/// </summary>
|
||||
internal static IConfigurationBuilder ConfigurationBuilder;
|
||||
public static IConfigurationBuilder ConfigurationBuilder;
|
||||
|
||||
/// <summary>
|
||||
/// 获取Web主机环境
|
||||
@ -24,6 +24,6 @@ namespace Infrastructure
|
||||
/// <summary>
|
||||
/// 获取泛型主机环境
|
||||
/// </summary>
|
||||
internal static IHostEnvironment HostEnvironment;
|
||||
public static IHostEnvironment HostEnvironment;
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,10 +2,10 @@
|
||||
|
||||
## 🍟概述
|
||||
* 本项目适合有一定NetCore和 vue基础的开发人员
|
||||
* 基于.NET 5实现的通用权限管理平台(RBAC模式)。整合最新技术高效快速开发,前后端分离模式,开箱即用。
|
||||
* 基于.NET5/.NET6实现的通用权限管理平台(RBAC模式)。整合最新技术高效快速开发,前后端分离模式,开箱即用。
|
||||
* 代码量少、学习简单、通俗易懂、功能强大、易扩展、轻量级,让web开发更快速、简单高效(从此告别996),解决70%的重复工作,专注您的业务,轻松开发从现在开始!
|
||||
* 前端采用Vue2.0、Element UI。
|
||||
* 后端采用Net5、Sqlsugar、MySQL。
|
||||
* 后端采用Net5/Net6、Sqlsugar、MySQL。
|
||||
* 权限认证使用Jwt,支持多终端认证系统。
|
||||
* 支持加载动态权限菜单,多方式轻松权限控制
|
||||
* 七牛云通用云产品优惠券:[点我进入](https://s.qiniu.com/FzEfay)。
|
||||
@ -29,7 +29,7 @@
|
||||
Vue版前端技术栈 :基于vue、vuex、vue-router 、vue-cli 、axios 和 element-ui,前端采用vscode工具开发
|
||||
|
||||
## 🍀后端技术
|
||||
核心框架:.Net5.0 + Web API + sqlsugar + swagger + signalR
|
||||
核心框架:.Net5.0/.Net6 + Web API + sqlsugar + swagger + signalR
|
||||
|
||||
定时计划任务:Quartz.Net组件
|
||||
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
"isRoot": true,
|
||||
"tools": {
|
||||
"dotnet-ef": {
|
||||
"version": "5.0.0",
|
||||
"version": "6.0.2",
|
||||
"commands": [
|
||||
"dotnet-ef"
|
||||
]
|
||||
|
||||
@ -75,7 +75,7 @@ namespace ZR.Admin.WebApi.Controllers
|
||||
/// <param name="resultCode"></param>
|
||||
/// <param name="data"></param>
|
||||
/// <returns></returns>
|
||||
protected ApiResult GetApiResult(ResultCode resultCode, object data = null)
|
||||
protected ApiResult GetApiResult(ResultCode resultCode, object? data = null)
|
||||
{
|
||||
var apiResult = new ApiResult((int)resultCode, resultCode.ToString())
|
||||
{
|
||||
|
||||
@ -67,7 +67,7 @@ namespace ZR.Admin.WebApi.Controllers
|
||||
/// <returns></returns>
|
||||
[HttpGet("getTableList")]
|
||||
[ActionPermissionFilter(Permission = "tool:gen:list")]
|
||||
public IActionResult FindListTable(string dbName, string tableName, PagerInfo pager)
|
||||
public IActionResult FindListTable(string dbName, string? tableName, PagerInfo pager)
|
||||
{
|
||||
List<DbTableInfo> list = _CodeGeneraterService.GetAllTables(dbName, tableName, pager);
|
||||
var page = new PagedInfo<DbTableInfo>
|
||||
@ -89,7 +89,7 @@ namespace ZR.Admin.WebApi.Controllers
|
||||
/// <returns></returns>
|
||||
[HttpGet("list")]
|
||||
[ActionPermissionFilter(Permission = "tool:gen:list")]
|
||||
public IActionResult GetGenTable(string tableName, PagerInfo pagerInfo)
|
||||
public IActionResult GetGenTable(string? tableName, PagerInfo pagerInfo)
|
||||
{
|
||||
//查询原表数据,部分字段映射到代码生成表字段
|
||||
var rows = GenTableService.GetGenTables(new GenTable() { TableName = tableName }, pagerInfo);
|
||||
@ -160,7 +160,7 @@ namespace ZR.Admin.WebApi.Controllers
|
||||
throw new CustomException("表不能为空");
|
||||
}
|
||||
string[] tableNames = tables.Split(',', StringSplitOptions.RemoveEmptyEntries);
|
||||
string userName = User.Identity.Name;
|
||||
var userName = HttpContext.GetName();
|
||||
|
||||
foreach (var tableName in tableNames)
|
||||
{
|
||||
@ -269,9 +269,9 @@ namespace ZR.Admin.WebApi.Controllers
|
||||
if (genTableInfo.GenType == "1")
|
||||
{
|
||||
string tempPath = WebHostEnvironment.ContentRootPath;
|
||||
|
||||
var parentPath = Directory.GetParent(tempPath)?.Parent?.FullName;
|
||||
//代码生成文件夹路径
|
||||
dto.GenCodePath = genTableInfo.GenPath.IsEmpty() ? Directory.GetParent(tempPath).FullName : genTableInfo.GenPath;
|
||||
dto.GenCodePath = genTableInfo.GenPath.IsEmpty() ? parentPath : genTableInfo.GenPath;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@ -16,6 +16,7 @@ using ZR.Service.System;
|
||||
using ZR.Model.System;
|
||||
using Infrastructure.Extensions;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using ZR.Model.System.Dto;
|
||||
|
||||
namespace ZR.Admin.WebApi.Controllers
|
||||
{
|
||||
|
||||
@ -2,15 +2,10 @@
|
||||
using Infrastructure.Enums;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using ZR.Admin.WebApi.Filters;
|
||||
using ZR.Common;
|
||||
using ZR.Model;
|
||||
using ZR.Model.System;
|
||||
using ZR.Model.System.Dto;
|
||||
using ZR.Model.Vo;
|
||||
using ZR.Service.System.IService;
|
||||
|
||||
namespace ZR.Admin.WebApi.Controllers.System
|
||||
|
||||
@ -2,13 +2,11 @@
|
||||
using Infrastructure.Enums;
|
||||
using Infrastructure.Model;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using System;
|
||||
using ZR.Admin.WebApi.Extensions;
|
||||
using ZR.Admin.WebApi.Filters;
|
||||
using ZR.Common;
|
||||
using ZR.Model;
|
||||
using ZR.Model.System;
|
||||
using ZR.Model.Vo;
|
||||
using ZR.Service.System.IService;
|
||||
|
||||
namespace ZR.Admin.WebApi.Controllers.System
|
||||
|
||||
@ -1,20 +1,19 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using System;
|
||||
using Infrastructure;
|
||||
using Infrastructure;
|
||||
using Infrastructure.Attribute;
|
||||
using Infrastructure.Constant;
|
||||
using Infrastructure.Enums;
|
||||
using Infrastructure.Model;
|
||||
using Mapster;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.SignalR;
|
||||
using SqlSugar;
|
||||
using ZR.Admin.WebApi.Extensions;
|
||||
using ZR.Admin.WebApi.Filters;
|
||||
using ZR.Common;
|
||||
using ZR.Model.Dto;
|
||||
using ZR.Model.Models;
|
||||
using ZR.Service.System.IService;
|
||||
using ZR.Admin.WebApi.Hubs;
|
||||
using Microsoft.AspNetCore.SignalR;
|
||||
using Infrastructure.Constant;
|
||||
using ZR.Common;
|
||||
using ZR.Model.System;
|
||||
using ZR.Model.System.Dto;
|
||||
using ZR.Service.System.IService;
|
||||
|
||||
namespace ZR.Admin.WebApi.Controllers.System
|
||||
{
|
||||
@ -99,7 +98,7 @@ namespace ZR.Admin.WebApi.Controllers.System
|
||||
}
|
||||
//从 Dto 映射到 实体
|
||||
var modal = parm.Adapt<SysNotice>().ToCreate(HttpContext);
|
||||
modal.Create_by = User.Identity.Name;
|
||||
modal.Create_by = HttpContext.GetName();
|
||||
modal.Create_time = DateTime.Now;
|
||||
|
||||
int result = _SysNoticeService.Insert(modal, it => new
|
||||
|
||||
@ -97,7 +97,7 @@ namespace ZR.Admin.WebApi.Controllers
|
||||
|
||||
tasksQz.ID = worker.NextId().ToString();
|
||||
tasksQz.IsStart = false;
|
||||
tasksQz.Create_by = User.Identity.Name;
|
||||
tasksQz.Create_by = HttpContext.GetName();
|
||||
|
||||
return SUCCESS(_tasksQzService.Add(tasksQz));
|
||||
}
|
||||
|
||||
@ -8,7 +8,6 @@ using ZR.Admin.WebApi.Filters;
|
||||
using ZR.Common;
|
||||
using ZR.Model;
|
||||
using ZR.Model.System;
|
||||
using ZR.Model.Vo;
|
||||
using ZR.Service.System.IService;
|
||||
|
||||
namespace ZR.Admin.WebApi.Controllers.monitor
|
||||
|
||||
@ -6,14 +6,7 @@ using ZR.Admin.WebApi.Filters;
|
||||
using ZR.Common;
|
||||
using ZR.Model;
|
||||
using ZR.Model.System.Dto;
|
||||
using ZR.Model.System;
|
||||
using ZR.Model.Vo;
|
||||
using ZR.Service.System.IService;
|
||||
using System;
|
||||
using System.IO;
|
||||
using OfficeOpenXml;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace ZR.Admin.WebApi.Controllers.monitor
|
||||
{
|
||||
|
||||
@ -1,19 +0,0 @@
|
||||
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
|
||||
#创建 /app文件夹
|
||||
WORKDIR /app
|
||||
#创建挂载目录,用于将程序部署在服务器本地
|
||||
#VOLUME /app
|
||||
#设置docker容器对外暴露端口
|
||||
EXPOSE 5000
|
||||
VOLUME /app/logs
|
||||
#COPY bin/Release/net5.0/publish/ app/
|
||||
COPY . app/
|
||||
|
||||
#设置容器内的时区,如果不设置,默认时区是标准时间比北京时间晚8个小时
|
||||
RUN echo "Asia/shanghai" > /etc/timezone
|
||||
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
|
||||
|
||||
# 复制发布文件到工作目录
|
||||
#COPY . app/
|
||||
|
||||
ENTRYPOINT ["dotnet", "ZR.Admin.WebApi.dll"]
|
||||
@ -1,14 +1,14 @@
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Snowflake.Core;
|
||||
//using Microsoft.AspNetCore.Http;
|
||||
//using Snowflake.Core;
|
||||
using System;
|
||||
|
||||
namespace ZR.Admin.WebApi.Extensions
|
||||
{
|
||||
public static class EntityExtension
|
||||
{
|
||||
public static TSource ToCreate<TSource>(this TSource source, HttpContext context = null)
|
||||
public static TSource ToCreate<TSource>(this TSource source, HttpContext? context = null)
|
||||
{
|
||||
var types = source.GetType();
|
||||
var types = source?.GetType();
|
||||
|
||||
//var worker = new IdWorker(1, 1);
|
||||
//if (types.GetProperty("ID") != null)
|
||||
|
||||
@ -51,7 +51,7 @@ namespace ZR.Admin.WebApi.Extensions
|
||||
var result = context.Request.Headers["X-Forwarded-For"].FirstOrDefault();
|
||||
if (string.IsNullOrEmpty(result))
|
||||
{
|
||||
result = context.Connection.RemoteIpAddress.ToString();
|
||||
result = context.Connection.RemoteIpAddress?.ToString();
|
||||
}
|
||||
if (string.IsNullOrEmpty(result) || result.Contains("::1"))
|
||||
result = "127.0.0.1";
|
||||
@ -72,7 +72,7 @@ namespace ZR.Admin.WebApi.Extensions
|
||||
|
||||
return !string.IsNullOrEmpty(uid) ? long.Parse(uid) : 0;
|
||||
}
|
||||
public static string GetName(this HttpContext context)
|
||||
public static string? GetName(this HttpContext context)
|
||||
{
|
||||
var uid = context.User?.Identity?.Name;
|
||||
|
||||
@ -84,7 +84,7 @@ namespace ZR.Admin.WebApi.Extensions
|
||||
/// </summary>
|
||||
/// <param name="context"></param>
|
||||
/// <returns></returns>
|
||||
public static IEnumerable<ClaimsIdentity> GetClaims(this HttpContext context)
|
||||
public static IEnumerable<ClaimsIdentity>? GetClaims(this HttpContext context)
|
||||
{
|
||||
return context.User?.Identities;
|
||||
}
|
||||
@ -119,7 +119,7 @@ namespace ZR.Admin.WebApi.Extensions
|
||||
return c;
|
||||
}
|
||||
|
||||
public static string GetRequestUrl(this HttpContext context)
|
||||
public static string? GetRequestUrl(this HttpContext context)
|
||||
{
|
||||
return context != null ? context.Request.Path.Value : "";
|
||||
}
|
||||
|
||||
@ -1,13 +1,7 @@
|
||||
using Infrastructure;
|
||||
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.OpenApi.Models;
|
||||
using Swashbuckle.AspNetCore.Filters;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
|
||||
namespace ZR.Admin.WebApi.Extensions
|
||||
{
|
||||
@ -51,7 +45,7 @@ namespace ZR.Admin.WebApi.Extensions
|
||||
{
|
||||
c.SwaggerDoc("v1", new OpenApiInfo
|
||||
{
|
||||
Title = "ZrAdmin.NET Api - .NET5",
|
||||
Title = "ZrAdmin.NET Api - .NET6",
|
||||
Version = "v1",
|
||||
Description = "",
|
||||
});
|
||||
|
||||
@ -2,9 +2,6 @@
|
||||
using Infrastructure.Model;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Mvc.Filters;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using ZR.Model.System;
|
||||
|
||||
namespace ZR.Admin.WebApi.Filters
|
||||
@ -22,9 +19,7 @@ namespace ZR.Admin.WebApi.Filters
|
||||
public string Permission { get; set; }
|
||||
private bool HasPermi { get; set; }
|
||||
private bool HasRole { get; set; }
|
||||
|
||||
public ActionPermissionFilter() { }
|
||||
|
||||
public ActionPermissionFilter(string permission)
|
||||
{
|
||||
Permission = permission;
|
||||
|
||||
@ -2,16 +2,10 @@
|
||||
using Infrastructure.Attribute;
|
||||
using Infrastructure.Model;
|
||||
using IPTools.Core;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Mvc.Controllers;
|
||||
using Microsoft.AspNetCore.Mvc.Filters;
|
||||
using NLog;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using ZR.Admin.WebApi.Extensions;
|
||||
using ZR.Model.System;
|
||||
using ZR.Service.System.IService;
|
||||
@ -122,7 +116,7 @@ namespace ZR.Admin.WebApi.Filters
|
||||
sysOperLog.jsonResult = logAttribute.IsSaveResponseData ? sysOperLog.jsonResult : "";
|
||||
}
|
||||
|
||||
LogEventInfo ei = new(LogLevel.Info, "GlobalActionMonitor", "");
|
||||
LogEventInfo ei = new(NLog.LogLevel.Info, "GlobalActionMonitor", "");
|
||||
|
||||
ei.Properties["jsonResult"] = !HttpMethods.IsGet(method) ? jsonResult : "";
|
||||
ei.Properties["requestParam"] = sysOperLog.operParam;
|
||||
@ -137,12 +131,12 @@ namespace ZR.Admin.WebApi.Filters
|
||||
}
|
||||
}
|
||||
|
||||
private LogAttribute GetLogAttribute(ControllerActionDescriptor controllerActionDescriptor)
|
||||
private LogAttribute? GetLogAttribute(ControllerActionDescriptor controllerActionDescriptor)
|
||||
{
|
||||
var attribute = controllerActionDescriptor.MethodInfo.GetCustomAttributes(inherit: true)
|
||||
.FirstOrDefault(a => a.GetType().Equals(typeof(LogAttribute)));
|
||||
|
||||
return (LogAttribute)attribute;
|
||||
return attribute as LogAttribute;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,17 +0,0 @@
|
||||
using Microsoft.AspNetCore.Authentication;
|
||||
using Microsoft.AspNetCore.Authentication.Cookies;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Security.Claims;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace ZR.Admin.WebApi.Framework
|
||||
{
|
||||
public class CookieUtil
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@ -1,12 +1,8 @@
|
||||
using Infrastructure;
|
||||
using Infrastructure.Extensions;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IdentityModel.Tokens.Jwt;
|
||||
using System.Linq;
|
||||
using System.Security.Claims;
|
||||
using System.Text;
|
||||
using ZR.Admin.WebApi.Extensions;
|
||||
@ -99,7 +95,7 @@ namespace ZR.Admin.WebApi.Framework
|
||||
/// </summary>
|
||||
/// <param name="token">令牌</param>
|
||||
/// <returns></returns>
|
||||
public static IEnumerable<Claim> ParseToken(string token)
|
||||
public static IEnumerable<Claim>? ParseToken(string token)
|
||||
{
|
||||
var tokenHandler = new JwtSecurityTokenHandler();
|
||||
var validateParameter = ValidParameters();
|
||||
@ -124,13 +120,13 @@ namespace ZR.Admin.WebApi.Framework
|
||||
/// </summary>
|
||||
/// <param name="jwtToken"></param>
|
||||
/// <returns></returns>
|
||||
public static LoginUser ValidateJwtToken(IEnumerable<Claim> jwtToken)
|
||||
public static LoginUser? ValidateJwtToken(IEnumerable<Claim> jwtToken)
|
||||
{
|
||||
try
|
||||
{
|
||||
var userData = jwtToken.FirstOrDefault(x => x.Type == ClaimTypes.UserData).Value;
|
||||
var userData = jwtToken.FirstOrDefault(x => x.Type == ClaimTypes.UserData);
|
||||
|
||||
LoginUser loginUser = JsonConvert.DeserializeObject<LoginUser>(userData);
|
||||
LoginUser loginUser = JsonConvert.DeserializeObject<LoginUser>(value: userData?.Value);
|
||||
return loginUser;
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
@ -1,11 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Infrastructure.Constant;
|
||||
using Infrastructure.Constant;
|
||||
using Infrastructure.Model;
|
||||
using Microsoft.AspNetCore.SignalR;
|
||||
using ZR.Model;
|
||||
using ZR.Service.System.IService;
|
||||
|
||||
namespace ZR.Admin.WebApi.Hubs
|
||||
@ -37,7 +32,7 @@ namespace ZR.Admin.WebApi.Hubs
|
||||
/// <returns></returns>
|
||||
public override Task OnConnectedAsync()
|
||||
{
|
||||
var name = Context.User.Identity.Name;
|
||||
var name = Context.User?.Identity?.Name;
|
||||
|
||||
var user = clientUsers.Any(u => u.ConnnectionId == Context.ConnectionId);
|
||||
//判断用户是否存在,否则添加集合
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace ZR.Model
|
||||
namespace ZR.Admin.WebApi.Hubs
|
||||
{
|
||||
public class OnlineUsers
|
||||
{
|
||||
|
||||
@ -7,7 +7,6 @@ using NLog;
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using ZR.Admin.WebApi.Extensions;
|
||||
using ZR.Admin.WebApi.Filters;
|
||||
using ZR.Model.System;
|
||||
using ZR.Service.System.IService;
|
||||
|
||||
@ -44,7 +43,7 @@ namespace ZR.Admin.WebApi.Middleware
|
||||
|
||||
private async Task HandleExceptionAsync(HttpContext context, Exception ex)
|
||||
{
|
||||
LogLevel logLevel = LogLevel.Info;
|
||||
NLog.LogLevel logLevel = NLog.LogLevel.Info;
|
||||
int code = (int)ResultCode.GLOBAL_ERROR;
|
||||
string msg;
|
||||
string error = string.Empty;
|
||||
@ -64,7 +63,7 @@ namespace ZR.Admin.WebApi.Middleware
|
||||
{
|
||||
msg = "服务器好像出了点问题......";
|
||||
error = $"{ex.Message}";
|
||||
logLevel = LogLevel.Error;
|
||||
logLevel = NLog.LogLevel.Error;
|
||||
context.Response.StatusCode = 500;
|
||||
}
|
||||
|
||||
@ -80,7 +79,7 @@ namespace ZR.Admin.WebApi.Middleware
|
||||
requestMethod = context.Request.Method,
|
||||
jsonResult = responseResult,
|
||||
errorMsg = string.IsNullOrEmpty(error) ? msg : error,
|
||||
operName = context.User.Identity.Name,
|
||||
operName = HttpContextExtension.GetName(context) ,
|
||||
operLocation = ip_info.Province + " " + ip_info.City,
|
||||
operTime = DateTime.Now
|
||||
};
|
||||
@ -92,7 +91,7 @@ namespace ZR.Admin.WebApi.Middleware
|
||||
ei.Properties["status"] = 1;//走正常返回都是通过走GlobalExceptionFilter不通过
|
||||
ei.Properties["jsonResult"] = responseResult;
|
||||
ei.Properties["requestParam"] = sysOperLog.operParam;
|
||||
ei.Properties["user"] = context.User.Identity.Name;
|
||||
ei.Properties["user"] = context.User.Identity?.Name;
|
||||
|
||||
Logger.Log(ei);
|
||||
await context.Response.WriteAsync(responseResult);
|
||||
|
||||
@ -9,7 +9,7 @@ using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace ZRAdmin.Middleware
|
||||
namespace ZR.Admin.WebApi.Middleware
|
||||
{
|
||||
public class RequestIPMiddleware
|
||||
{
|
||||
|
||||
@ -1,29 +1,128 @@
|
||||
using Infrastructure.Startups;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using NLog.Web;
|
||||
using Infrastructure;
|
||||
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
||||
using Microsoft.AspNetCore.DataProtection;
|
||||
using ZR.Admin.WebApi.Framework;
|
||||
using Hei.Captcha;
|
||||
using Infrastructure.Extensions;
|
||||
using ZR.Admin.WebApi.Extensions;
|
||||
using ZR.Admin.WebApi.Filters;
|
||||
using ZR.Admin.WebApi.Middleware;
|
||||
using ZR.Admin.WebApi.Hubs;
|
||||
|
||||
namespace ZR.Admin.WebApi
|
||||
var builder = WebApplication.CreateBuilder(args);
|
||||
|
||||
// Add services to the container.
|
||||
|
||||
builder.Services.AddControllers();
|
||||
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
|
||||
builder.Services.AddEndpointsApiExplorer();
|
||||
builder.Services.AddSwaggerGen();
|
||||
//注入HttpContextAccessor
|
||||
builder.Services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
|
||||
|
||||
//配置跨域
|
||||
builder.Services.AddCors(c =>
|
||||
{
|
||||
public class Program
|
||||
c.AddPolicy("Policy", policy =>
|
||||
{
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
CreateHostBuilder(args).Build().Run();
|
||||
}
|
||||
|
||||
public static IHostBuilder CreateHostBuilder(string[] args)
|
||||
{
|
||||
var builder = Host.CreateDefaultBuilder(args)
|
||||
.ConfigureWebHostDefaults(webBuilder =>
|
||||
{
|
||||
webBuilder
|
||||
.Init("Infrastructure")
|
||||
.UseNLog()
|
||||
.UseStartup<Startup>();
|
||||
policy.WithOrigins(builder.Configuration["corsUrls"].Split(',', StringSplitOptions.RemoveEmptyEntries))
|
||||
.AllowAnyHeader()//允许任意头
|
||||
.AllowCredentials()//允许cookie
|
||||
.AllowAnyMethod();//允许任意方法
|
||||
});
|
||||
});
|
||||
|
||||
return builder;
|
||||
}
|
||||
}
|
||||
//注入SignalR实时通讯,默认用json传输
|
||||
builder.Services.AddSignalR();
|
||||
//消除Error unprotecting the session cookie警告
|
||||
builder.Services.AddDataProtection()
|
||||
.PersistKeysToFileSystem(new DirectoryInfo(Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + "DataProtection"));
|
||||
//普通验证码
|
||||
builder.Services.AddHeiCaptcha();
|
||||
//builder.Services.AddSession();
|
||||
builder.Services.AddHttpContextAccessor();
|
||||
//绑定整个对象到Model上
|
||||
builder.Services.Configure<OptionsSetting>(builder.Configuration);
|
||||
|
||||
//jwt 认证
|
||||
builder.Services.AddAuthentication(options =>
|
||||
{
|
||||
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
|
||||
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
|
||||
}).AddCookie()
|
||||
.AddJwtBearer(o =>
|
||||
{
|
||||
o.TokenValidationParameters = JwtUtil.ValidParameters();
|
||||
});
|
||||
|
||||
InternalApp.InternalServices = builder.Services;
|
||||
builder.Services.AddAppService();
|
||||
builder.Services.AddSingleton(new AppSettings(builder.Configuration));
|
||||
//开启计划任务
|
||||
builder.Services.AddTaskSchedulers();
|
||||
//初始化db
|
||||
DbExtension.AddDb(builder.Configuration);
|
||||
|
||||
//注册REDIS 服务
|
||||
Task.Run(() =>
|
||||
{
|
||||
//RedisServer.Initalize();
|
||||
});
|
||||
builder.Services.AddMvc(options =>
|
||||
{
|
||||
options.Filters.Add(typeof(GlobalActionMonitor));//全局注册
|
||||
})
|
||||
.AddJsonOptions(options =>
|
||||
{
|
||||
options.JsonSerializerOptions.Converters.Add(new JsonConverterUtil.DateTimeConverter());
|
||||
options.JsonSerializerOptions.Converters.Add(new JsonConverterUtil.DateTimeNullConverter());
|
||||
});
|
||||
|
||||
builder.Services.AddSwaggerConfig();
|
||||
|
||||
var app = builder.Build();
|
||||
|
||||
if (app.Environment.IsDevelopment())
|
||||
{
|
||||
app.UseSwagger();
|
||||
app.UseSwaggerUI();
|
||||
}
|
||||
//使可以多次多去body内容
|
||||
app.Use((context, next) =>
|
||||
{
|
||||
context.Request.EnableBuffering();
|
||||
if (context.Request.Query.TryGetValue("access_token", out var token))
|
||||
{
|
||||
context.Request.Headers.Add("Authorization", $"Bearer {token}");
|
||||
}
|
||||
return next();
|
||||
});
|
||||
//开启访问静态文件/wwwroot目录文件,要放在UseRouting前面
|
||||
app.UseStaticFiles();
|
||||
//开启路由访问
|
||||
app.UseRouting();
|
||||
app.UseCors("Policy");//要放在app.UseEndpoints前。
|
||||
//app.UseHttpsRedirection();
|
||||
|
||||
app.UseAuthentication();
|
||||
app.UseAuthorization();
|
||||
|
||||
//开启缓存
|
||||
app.UseResponseCaching();
|
||||
//恢复/启动任务
|
||||
app.UseAddTaskSchedulers();
|
||||
//使用全局异常中间件
|
||||
app.UseMiddleware<GlobalExceptionMiddleware>();
|
||||
|
||||
app.UseEndpoints(endpoints =>
|
||||
{
|
||||
//设置socket连接
|
||||
endpoints.MapHub<MessageHub>("/msgHub");
|
||||
|
||||
endpoints.MapControllerRoute(
|
||||
name: "default",
|
||||
pattern: "{controller=Home}/{action=Index}/{id?}");
|
||||
});
|
||||
app.MapControllers();
|
||||
|
||||
app.Run();
|
||||
@ -2,19 +2,19 @@
|
||||
<!--
|
||||
https://go.microsoft.com/fwlink/?LinkID=208121.
|
||||
-->
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<DeleteExistingFiles>True</DeleteExistingFiles>
|
||||
<ExcludeApp_Data>False</ExcludeApp_Data>
|
||||
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
|
||||
<DeleteExistingFiles>true</DeleteExistingFiles>
|
||||
<ExcludeApp_Data>false</ExcludeApp_Data>
|
||||
<LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
|
||||
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
|
||||
<LastUsedPlatform>Any CPU</LastUsedPlatform>
|
||||
<PublishProvider>FileSystem</PublishProvider>
|
||||
<PublishUrl>bin\Release\net5.0\publish\</PublishUrl>
|
||||
<PublishUrl>bin\Release\net6.0\publish\</PublishUrl>
|
||||
<WebPublishMethod>FileSystem</WebPublishMethod>
|
||||
<SiteUrlToLaunchAfterPublish />
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<ProjectGuid>ba176987-aabb-406a-b4a8-6b63b422b703</ProjectGuid>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<ProjectGuid>e5497bb4-b0c1-4794-9fae-163f626ec399</ProjectGuid>
|
||||
<SelfContained>false</SelfContained>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@ -1,12 +1,23 @@
|
||||
{
|
||||
"profiles": {
|
||||
"ZRAdmin": {
|
||||
"commandName": "Project",
|
||||
"launchBrowser": false,
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Stage"
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/launchsettings.json",
|
||||
"iisSettings": {
|
||||
"windowsAuthentication": false,
|
||||
"anonymousAuthentication": true,
|
||||
"iisExpress": {
|
||||
"applicationUrl": "http://localhost:63521",
|
||||
"sslPort": 44395
|
||||
}
|
||||
},
|
||||
"applicationUrl": "http://localhost:8888"
|
||||
"profiles": {
|
||||
"ZR.Admin.WebApi": {
|
||||
"commandName": "Project",
|
||||
"dotnetRunMessages": true,
|
||||
"launchBrowser": true,
|
||||
"launchUrl": "swagger",
|
||||
"applicationUrl": "http://localhost:8888",
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,163 +0,0 @@
|
||||
using Hei.Captcha;
|
||||
using Infrastructure;
|
||||
using Infrastructure.Extensions;
|
||||
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
using Microsoft.AspNetCore.DataProtection;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Threading.Tasks;
|
||||
using ZR.Admin.WebApi.Extensions;
|
||||
using ZR.Admin.WebApi.Filters;
|
||||
using ZR.Admin.WebApi.Framework;
|
||||
using ZR.Admin.WebApi.Hubs;
|
||||
using ZR.Admin.WebApi.Middleware;
|
||||
|
||||
namespace ZR.Admin.WebApi
|
||||
{
|
||||
public class Startup
|
||||
{
|
||||
public Startup(IConfiguration configuration)
|
||||
{
|
||||
Configuration = configuration;
|
||||
}
|
||||
private NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
|
||||
public IConfiguration Configuration { get; }
|
||||
public void ConfigureServices(IServiceCollection services)
|
||||
{
|
||||
string corsUrls = Configuration["corsUrls"];
|
||||
|
||||
//配置跨域
|
||||
services.AddCors(c =>
|
||||
{
|
||||
c.AddPolicy("Policy", policy =>
|
||||
{
|
||||
policy.WithOrigins(corsUrls.Split(',', StringSplitOptions.RemoveEmptyEntries))
|
||||
.AllowAnyHeader()//允许任意头
|
||||
.AllowCredentials()//允许cookie
|
||||
.AllowAnyMethod();//允许任意方法
|
||||
});
|
||||
});
|
||||
//注入SignalR实时通讯,默认用json传输
|
||||
services.AddSignalR(options =>
|
||||
{
|
||||
//客户端发保持连接请求到服务端最长间隔,默认30秒,改成4分钟,网页需跟着设置connection.keepAliveIntervalInMilliseconds = 12e4;即2分钟
|
||||
//options.ClientTimeoutInterval = TimeSpan.FromMinutes(4);
|
||||
//服务端发保持连接请求到客户端间隔,默认15秒,改成2分钟,网页需跟着设置connection.serverTimeoutInMilliseconds = 24e4;即4分钟
|
||||
//options.KeepAliveInterval = TimeSpan.FromMinutes(2);
|
||||
});
|
||||
//消除Error unprotecting the session cookie警告
|
||||
services.AddDataProtection()
|
||||
.PersistKeysToFileSystem(new DirectoryInfo(Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + "DataProtection"));
|
||||
//普通验证码
|
||||
services.AddHeiCaptcha();
|
||||
services.AddSession();
|
||||
services.AddHttpContextAccessor();
|
||||
|
||||
//绑定整个对象到Model上
|
||||
services.Configure<OptionsSetting>(Configuration);
|
||||
|
||||
//jwt 认证
|
||||
services.AddAuthentication(options =>
|
||||
{
|
||||
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
|
||||
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
|
||||
}).AddCookie()
|
||||
.AddJwtBearer(o =>
|
||||
{
|
||||
o.TokenValidationParameters = JwtUtil.ValidParameters();
|
||||
});
|
||||
|
||||
InjectServices(services, Configuration);
|
||||
|
||||
services.AddMvc(options =>
|
||||
{
|
||||
options.Filters.Add(typeof(GlobalActionMonitor));//全局注册
|
||||
})
|
||||
.AddJsonOptions(options =>
|
||||
{
|
||||
options.JsonSerializerOptions.Converters.Add(new JsonConverterUtil.DateTimeConverter());
|
||||
options.JsonSerializerOptions.Converters.Add(new JsonConverterUtil.DateTimeNullConverter());
|
||||
});
|
||||
|
||||
services.AddSwaggerConfig();
|
||||
}
|
||||
|
||||
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
|
||||
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
|
||||
{
|
||||
if (env.IsDevelopment())
|
||||
{
|
||||
app.UseDeveloperExceptionPage();
|
||||
}
|
||||
app.UseSwagger();
|
||||
//使可以多次多去body内容
|
||||
app.Use((context, next) =>
|
||||
{
|
||||
context.Request.EnableBuffering();
|
||||
if (context.Request.Query.TryGetValue("access_token", out var token))
|
||||
{
|
||||
context.Request.Headers.Add("Authorization", $"Bearer {token}");
|
||||
}
|
||||
return next();
|
||||
});
|
||||
//开启访问静态文件/wwwroot目录文件,要放在UseRouting前面
|
||||
app.UseStaticFiles();
|
||||
//开启路由访问
|
||||
app.UseRouting();
|
||||
app.UseCors("Policy");//要放在app.UseEndpoints前。
|
||||
|
||||
//app.UseAuthentication会启用Authentication中间件,该中间件会根据当前Http请求中的Cookie信息来设置HttpContext.User属性(后面会用到),
|
||||
//所以只有在app.UseAuthentication方法之后注册的中间件才能够从HttpContext.User中读取到值,
|
||||
//这也是为什么上面强调app.UseAuthentication方法一定要放在下面的app.UseMvc方法前面,因为只有这样ASP.NET Core的MVC中间件中才能读取到HttpContext.User的值。
|
||||
//1.先开启认证
|
||||
app.UseAuthentication();
|
||||
//2.再开启授权
|
||||
app.UseAuthorization();
|
||||
//开启session
|
||||
app.UseSession();
|
||||
//开启缓存
|
||||
app.UseResponseCaching();
|
||||
//恢复/启动任务
|
||||
app.UseAddTaskSchedulers();
|
||||
//使用全局异常中间件
|
||||
app.UseMiddleware<GlobalExceptionMiddleware>();
|
||||
|
||||
app.UseEndpoints(endpoints =>
|
||||
{
|
||||
//设置socket连接
|
||||
endpoints.MapHub<MessageHub>("/msgHub");
|
||||
|
||||
endpoints.MapControllerRoute(
|
||||
name: "default",
|
||||
pattern: "{controller=Home}/{action=Index}/{id?}");
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 注册Services服务
|
||||
/// </summary>
|
||||
/// <param name="services"></param>
|
||||
/// <param name="configuration"></param>
|
||||
private void InjectServices(IServiceCollection services, IConfiguration configuration)
|
||||
{
|
||||
services.AddAppService();
|
||||
services.AddSingleton(new AppSettings(configuration));
|
||||
//开启计划任务
|
||||
services.AddTaskSchedulers();
|
||||
//初始化db
|
||||
DbExtension.AddDb(configuration);
|
||||
|
||||
//注册REDIS 服务
|
||||
Task.Run(() =>
|
||||
{
|
||||
//RedisServer.Initalize();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,78 +1,48 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<UserSecretsId>bc51af00-60b6-4e2a-935e-267c368c890a</UserSecretsId>
|
||||
<EnableNETAnalyzers>false</EnableNETAnalyzers>
|
||||
<SatelliteResourceLanguages>zh-Hans</SatelliteResourceLanguages>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
<DocumentationFile>ZRAdmin.xml</DocumentationFile>
|
||||
<NoWarn>1701;1702;1591;1570</NoWarn>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Remove="Filters\GlobalExceptionFilter.cs" />
|
||||
<Compile Remove="Middleware\RequestIPMiddleware.cs" />
|
||||
<Compile Remove="Middleware\**" />
|
||||
<Content Remove="Middleware\**" />
|
||||
<EmbeddedResource Remove="Middleware\**" />
|
||||
<None Remove="Middleware\**" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Remove="wwwroot\CodeGenTemplate\VueTemplate.txt" />
|
||||
<Compile Include="Middleware\GlobalExceptionMiddleware.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="EPPlus" Version="5.8.6" />
|
||||
<PackageReference Include="Hei.Captcha" Version="0.3.0" />
|
||||
<PackageReference Include="IPTools.China" Version="1.6.0" />
|
||||
<PackageReference Include="CSRedisCore" Version="3.6.9" />
|
||||
<PackageReference Include="Mapster" Version="7.3.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="5.0.0" NoWarn="NU1605" />
|
||||
<PackageReference Include="NETCore.Encrypt" Version="2.1.0" />
|
||||
<PackageReference Include="NLog" Version="4.7.14" />
|
||||
<PackageReference Include="NLog.Web.AspNetCore" Version="4.14.0" />
|
||||
<PackageReference Include="Snowflake.Core" Version="2.0.0" />
|
||||
<PackageReference Include="SqlSugar.IOC" Version="1.7.0" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore.Filters" Version="7.0.2" />
|
||||
<PackageReference Include="UAParser" Version="3.1.47" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\ZR.CodeGenerator\ZR.CodeGenerator.csproj" />
|
||||
<ProjectReference Include="..\ZR.Service\ZR.Service.csproj" />
|
||||
<ProjectReference Include="..\ZR.Tasks\ZR.Tasks.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Update="NLog.config">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.2" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore.Filters" Version="7.0.2" />
|
||||
<PackageReference Include="UAParser" Version="3.1.47" />
|
||||
<PackageReference Include="IPTools.China" Version="1.6.0" />
|
||||
<PackageReference Include="NLog" Version="5.0.0-rc2" />
|
||||
<PackageReference Include="NLog.Web.AspNetCore" Version="4.14.0" />
|
||||
<PackageReference Include="Mapster" Version="7.3.0" />
|
||||
<PackageReference Include="SqlSugar.IOC" Version="1.7.0" />
|
||||
<PackageReference Include="EPPlus" Version="5.8.6" />
|
||||
<PackageReference Include="Hei.Captcha" Version="0.3.0" />
|
||||
<PackageReference Include="Snowflake.Core" Version="2.0.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Controllers\" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Update="build.bat">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Update="Dockerfile">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Update="ip2region.db">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Update="ZRAdmin.xml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Controllers\Business\" />
|
||||
<Folder Include="DataProtection\" />
|
||||
<Folder Include="wwwroot\export\" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@ -1,8 +0,0 @@
|
||||
@echo off
|
||||
|
||||
docker build -t ZRAdmin.NET:latest -f ./Dockerfile .
|
||||
|
||||
echo "==============查看镜像==========="
|
||||
docker images
|
||||
|
||||
pause
|
||||
@ -1,7 +1,7 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
@ -9,7 +9,7 @@
|
||||
<PackageReference Include="CSRedisCore" Version="3.6.9" />
|
||||
<PackageReference Include="EPPlus" Version="5.8.6" />
|
||||
<PackageReference Include="MailKit" Version="3.1.1" />
|
||||
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="5.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="6.0.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
using System;
|
||||
|
||||
namespace ZR.Model.Dto
|
||||
namespace ZR.Model.System.Dto
|
||||
{
|
||||
/// <summary>
|
||||
/// 参数配置输入对象模型
|
||||
@ -18,7 +18,7 @@ namespace ZR.Model.Dto
|
||||
/// <summary>
|
||||
/// 参数配置查询对象模型
|
||||
/// </summary>
|
||||
public class SysConfigQueryDto: PagerInfo
|
||||
public class SysConfigQueryDto : PagerInfo
|
||||
{
|
||||
public string ConfigName { get; set; }
|
||||
public string ConfigKey { get; set; }
|
||||
|
||||
@ -2,10 +2,9 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
using ZR.Model.Dto;
|
||||
using ZR.Model.Models;
|
||||
|
||||
namespace ZR.Model.Dto
|
||||
namespace ZR.Model.System.Dto
|
||||
{
|
||||
/// <summary>
|
||||
/// 通知公告表输入对象
|
||||
|
||||
@ -1,9 +1,8 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using SqlSugar;
|
||||
using ZR.Model.System;
|
||||
|
||||
namespace ZR.Model.Models
|
||||
namespace ZR.Model.System
|
||||
{
|
||||
/// <summary>
|
||||
/// 通知公告表,数据实体对象
|
||||
@ -19,7 +18,7 @@ namespace ZR.Model.Models
|
||||
/// 描述 : 公告ID
|
||||
/// 空值 : true
|
||||
/// </summary>
|
||||
[SqlSugar.SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnName = "notice_id")]
|
||||
[SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnName = "notice_id")]
|
||||
public int NoticeId { get; set; }
|
||||
/// <summary>
|
||||
/// 描述 : 公告标题
|
||||
|
||||
@ -4,7 +4,7 @@ using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using ZR.Model.System;
|
||||
|
||||
namespace ZR.Model.Vo.System
|
||||
namespace ZR.Model.System.Vo
|
||||
{
|
||||
/// <summary>
|
||||
/// Treeselect树结构实体类
|
||||
|
||||
@ -2,6 +2,7 @@ using System;
|
||||
using Infrastructure.Attribute;
|
||||
using ZR.Repository.System;
|
||||
using ZR.Model.Models;
|
||||
using ZR.Model.System;
|
||||
|
||||
namespace ZR.Repository.System
|
||||
{
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
@ -10,7 +10,6 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Extensions.Options" Version="5.0.0" />
|
||||
<PackageReference Include="MySql.Data" Version="8.0.25" />
|
||||
<PackageReference Include="NETCore.Encrypt" Version="2.1.0" />
|
||||
<PackageReference Include="SqlSugar.IOC" Version="1.7.0" />
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using ZR.Model.System;
|
||||
using ZR.Model.Vo.System;
|
||||
using ZR.Model.System.Vo;
|
||||
|
||||
namespace ZR.Service.System.IService
|
||||
{
|
||||
|
||||
@ -2,7 +2,6 @@
|
||||
using ZR.Model.System.Dto;
|
||||
using ZR.Model.System;
|
||||
using ZR.Model.System.Vo;
|
||||
using ZR.Model.Vo.System;
|
||||
|
||||
namespace ZR.Service.System.IService
|
||||
{
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using ZR.Model.Models;
|
||||
using ZR.Model.System;
|
||||
|
||||
namespace ZR.Service.System.IService
|
||||
{
|
||||
|
||||
@ -8,7 +8,7 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using ZR.Common;
|
||||
using ZR.Model.System;
|
||||
using ZR.Model.Vo.System;
|
||||
using ZR.Model.System.Vo;
|
||||
using ZR.Repository.System;
|
||||
using ZR.Service.System.IService;
|
||||
|
||||
|
||||
@ -73,7 +73,7 @@ namespace ZR.Service.System
|
||||
{
|
||||
str = Guid.NewGuid().ToString();
|
||||
}
|
||||
MD5CryptoServiceProvider md5 = new();
|
||||
MD5 md5 = MD5.Create();
|
||||
return BitConverter.ToString(md5.ComputeHash(Encoding.Default.GetBytes(str)), 4, 8).Replace("-", "");
|
||||
}
|
||||
|
||||
|
||||
@ -4,7 +4,6 @@ using System.Linq;
|
||||
using ZR.Model.System.Dto;
|
||||
using ZR.Model.System;
|
||||
using ZR.Model.System.Vo;
|
||||
using ZR.Model.Vo.System;
|
||||
using ZR.Repository.System;
|
||||
using ZR.Service.System.IService;
|
||||
using ZR.Common;
|
||||
|
||||
@ -3,6 +3,7 @@ using Infrastructure.Attribute;
|
||||
using SqlSugar;
|
||||
using System.Collections.Generic;
|
||||
using ZR.Model.Models;
|
||||
using ZR.Model.System;
|
||||
using ZR.Repository;
|
||||
using ZR.Repository.System;
|
||||
using ZR.Service.System.IService;
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@ -1,11 +1,12 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="NLog" Version="4.7.14" />
|
||||
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="6.0.1" />
|
||||
<PackageReference Include="NLog" Version="5.0.0-rc2" />
|
||||
<PackageReference Include="Quartz" Version="3.3.3" />
|
||||
<PackageReference Include="Quartz.Serialization.Json" Version="3.3.3" />
|
||||
</ItemGroup>
|
||||
|
||||
104
ZRAdmin.sln
104
ZRAdmin.sln
@ -1,31 +1,23 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.30711.63
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.1.32210.238
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ZR.Admin.WebApi", "ZR.Admin.WebApi\ZR.Admin.WebApi.csproj", "{BA176987-AABB-406A-B4A8-6B63B422B703}"
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZR.Admin.WebApi", "ZR.Admin.WebApi\ZR.Admin.WebApi.csproj", "{E5497BB4-B0C1-4794-9FAE-163F626EC399}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ZR.Repository", "ZR.Repository\ZR.Repository.csproj", "{0665F19A-F8DC-4C8C-8382-68ABE75E8646}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ZR.Model", "ZR.Model\ZR.Model.csproj", "{B35D73B1-2E22-4636-B88B-10C5E6D8E524}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ZR.Model", "ZR.Model\ZR.Model.csproj", "{F762038D-733D-4572-A55F-4C4EA6A8BE5F}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ZR.Common", "ZR.Common\ZR.Common.csproj", "{42C84599-1E99-45B4-929B-417C37337EF8}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ZR.Service", "ZR.Service\ZR.Service.csproj", "{76F7557E-BB62-48AC-AF6D-EE62BBF64225}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Infrastructure", "Infrastructure\Infrastructure.csproj", "{5D740120-5491-4FE2-B5BE-8A9C48BFE3C5}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ZR.Common", "ZR.Common\ZR.Common.csproj", "{D7F7C898-8758-46E6-B26B-960FE79FF8CF}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ZR.Tasks", "ZR.Tasks\ZR.Tasks.csproj", "{B657ED99-40E5-423A-AFE7-157C4EE576CB}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Infrastructure", "Infrastructure\Infrastructure.csproj", "{DF8B3C35-6E0E-481B-B2CB-C2BED3AF8634}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ZR.Service", "ZR.Service\ZR.Service.csproj", "{75ADA3C1-148D-4727-A718-79447D9B5EEE}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "02 Interfaces", "02 Interfaces", "{CAB76A06-3117-4AEB-8540-58ED63E7F96C}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ZR.Repository", "ZR.Repository\ZR.Repository.csproj", "{17E277BF-B2B8-4111-AE43-38246128C83C}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "01 基础设施层", "01 基础设施层", "{3DA5CBAB-687B-4022-B43B-AA7856121B9E}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ZR.Tasks", "ZR.Tasks\ZR.Tasks.csproj", "{328C152F-4DA3-4ABB-A9B7-628109902088}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Quartz定时任务", "Quartz定时任务", "{8A1C9D96-9967-42DA-9A57-2C945E08E93E}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UI", "UI", "{7BBADB30-A3CB-4A8D-91E2-FE8F13AD1536}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ZR.CodeGenerator", "ZR.CodeGenerator\ZR.CodeGenerator.csproj", "{42F902A7-33C4-44D6-A7D8-5E0E72DAA03C}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ZR.CodeGenerator", "ZR.CodeGenerator\ZR.CodeGenerator.csproj", "{B353DE0B-12C6-4C15-909A-DB68F71D5AE9}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
@ -33,53 +25,43 @@ Global
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{BA176987-AABB-406A-B4A8-6B63B422B703}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BA176987-AABB-406A-B4A8-6B63B422B703}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BA176987-AABB-406A-B4A8-6B63B422B703}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{BA176987-AABB-406A-B4A8-6B63B422B703}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{0665F19A-F8DC-4C8C-8382-68ABE75E8646}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{0665F19A-F8DC-4C8C-8382-68ABE75E8646}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{0665F19A-F8DC-4C8C-8382-68ABE75E8646}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{0665F19A-F8DC-4C8C-8382-68ABE75E8646}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{F762038D-733D-4572-A55F-4C4EA6A8BE5F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{F762038D-733D-4572-A55F-4C4EA6A8BE5F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F762038D-733D-4572-A55F-4C4EA6A8BE5F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{F762038D-733D-4572-A55F-4C4EA6A8BE5F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{76F7557E-BB62-48AC-AF6D-EE62BBF64225}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{76F7557E-BB62-48AC-AF6D-EE62BBF64225}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{76F7557E-BB62-48AC-AF6D-EE62BBF64225}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{76F7557E-BB62-48AC-AF6D-EE62BBF64225}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{D7F7C898-8758-46E6-B26B-960FE79FF8CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D7F7C898-8758-46E6-B26B-960FE79FF8CF}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D7F7C898-8758-46E6-B26B-960FE79FF8CF}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{D7F7C898-8758-46E6-B26B-960FE79FF8CF}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{DF8B3C35-6E0E-481B-B2CB-C2BED3AF8634}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{DF8B3C35-6E0E-481B-B2CB-C2BED3AF8634}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{DF8B3C35-6E0E-481B-B2CB-C2BED3AF8634}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{DF8B3C35-6E0E-481B-B2CB-C2BED3AF8634}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{328C152F-4DA3-4ABB-A9B7-628109902088}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{328C152F-4DA3-4ABB-A9B7-628109902088}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{328C152F-4DA3-4ABB-A9B7-628109902088}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{328C152F-4DA3-4ABB-A9B7-628109902088}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{42F902A7-33C4-44D6-A7D8-5E0E72DAA03C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{42F902A7-33C4-44D6-A7D8-5E0E72DAA03C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{42F902A7-33C4-44D6-A7D8-5E0E72DAA03C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{42F902A7-33C4-44D6-A7D8-5E0E72DAA03C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{E5497BB4-B0C1-4794-9FAE-163F626EC399}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E5497BB4-B0C1-4794-9FAE-163F626EC399}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E5497BB4-B0C1-4794-9FAE-163F626EC399}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E5497BB4-B0C1-4794-9FAE-163F626EC399}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{B35D73B1-2E22-4636-B88B-10C5E6D8E524}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B35D73B1-2E22-4636-B88B-10C5E6D8E524}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B35D73B1-2E22-4636-B88B-10C5E6D8E524}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B35D73B1-2E22-4636-B88B-10C5E6D8E524}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{42C84599-1E99-45B4-929B-417C37337EF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{42C84599-1E99-45B4-929B-417C37337EF8}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{42C84599-1E99-45B4-929B-417C37337EF8}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{42C84599-1E99-45B4-929B-417C37337EF8}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{5D740120-5491-4FE2-B5BE-8A9C48BFE3C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{5D740120-5491-4FE2-B5BE-8A9C48BFE3C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{5D740120-5491-4FE2-B5BE-8A9C48BFE3C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{5D740120-5491-4FE2-B5BE-8A9C48BFE3C5}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{B657ED99-40E5-423A-AFE7-157C4EE576CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B657ED99-40E5-423A-AFE7-157C4EE576CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B657ED99-40E5-423A-AFE7-157C4EE576CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B657ED99-40E5-423A-AFE7-157C4EE576CB}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{75ADA3C1-148D-4727-A718-79447D9B5EEE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{75ADA3C1-148D-4727-A718-79447D9B5EEE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{75ADA3C1-148D-4727-A718-79447D9B5EEE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{75ADA3C1-148D-4727-A718-79447D9B5EEE}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{17E277BF-B2B8-4111-AE43-38246128C83C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{17E277BF-B2B8-4111-AE43-38246128C83C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{17E277BF-B2B8-4111-AE43-38246128C83C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{17E277BF-B2B8-4111-AE43-38246128C83C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{B353DE0B-12C6-4C15-909A-DB68F71D5AE9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B353DE0B-12C6-4C15-909A-DB68F71D5AE9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B353DE0B-12C6-4C15-909A-DB68F71D5AE9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B353DE0B-12C6-4C15-909A-DB68F71D5AE9}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{BA176987-AABB-406A-B4A8-6B63B422B703} = {7BBADB30-A3CB-4A8D-91E2-FE8F13AD1536}
|
||||
{0665F19A-F8DC-4C8C-8382-68ABE75E8646} = {CAB76A06-3117-4AEB-8540-58ED63E7F96C}
|
||||
{F762038D-733D-4572-A55F-4C4EA6A8BE5F} = {CAB76A06-3117-4AEB-8540-58ED63E7F96C}
|
||||
{76F7557E-BB62-48AC-AF6D-EE62BBF64225} = {CAB76A06-3117-4AEB-8540-58ED63E7F96C}
|
||||
{D7F7C898-8758-46E6-B26B-960FE79FF8CF} = {3DA5CBAB-687B-4022-B43B-AA7856121B9E}
|
||||
{DF8B3C35-6E0E-481B-B2CB-C2BED3AF8634} = {3DA5CBAB-687B-4022-B43B-AA7856121B9E}
|
||||
{328C152F-4DA3-4ABB-A9B7-628109902088} = {8A1C9D96-9967-42DA-9A57-2C945E08E93E}
|
||||
{42F902A7-33C4-44D6-A7D8-5E0E72DAA03C} = {3DA5CBAB-687B-4022-B43B-AA7856121B9E}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {F420E614-D8A9-4E15-B9EA-9205B3DE7BAB}
|
||||
SolutionGuid = {0469FF3A-7322-4053-94C7-881B103A57C5}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user