42 changed files with 1752 additions and 27 deletions
@ -0,0 +1,337 @@ |
|||
|
|||
Microsoft Visual Studio Solution File, Format Version 12.00 |
|||
# Visual Studio Version 17 |
|||
VisualStudioVersion = 17.0.31903.59 |
|||
MinimumVisualStudioVersion = 10.0.40219.1 |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "framework", "framework", "{BD5616DF-D493-4170-8E78-46486BE77FC2}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "modules", "modules", "{EDB927C3-0589-4DAD-B5FE-5A4B5C727122}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "hosts", "hosts", "{1B7F2C6E-1712-4F22-989C-D56C7AEF7F16}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "wechat", "wechat", "{EDBB7BC1-46F0-4803-A572-7F8FEF433BE2}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat", "framework\wechat\LINGYUN.Abp.WeChat\LINGYUN.Abp.WeChat.csproj", "{915E4DB5-8017-43C5-B547-08658F0ED488}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.Common", "framework\wechat\LINGYUN.Abp.WeChat.Common\LINGYUN.Abp.WeChat.Common.csproj", "{3E91B702-7EAD-423D-BCFF-8EE9886AB8E3}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.MiniProgram", "framework\wechat\LINGYUN.Abp.WeChat.MiniProgram\LINGYUN.Abp.WeChat.MiniProgram.csproj", "{08361B78-A90E-45BD-8517-B64208D7DAA0}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.Official", "framework\wechat\LINGYUN.Abp.WeChat.Official\LINGYUN.Abp.WeChat.Official.csproj", "{3F20CF07-12AE-49F4-84CE-F7BB99C519F8}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.Official.Application", "framework\wechat\LINGYUN.Abp.WeChat.Official.Application\LINGYUN.Abp.WeChat.Official.Application.csproj", "{DC9E82AE-5AEC-4A9D-9D20-E0E6604A825E}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.Official.Application.Contracts", "framework\wechat\LINGYUN.Abp.WeChat.Official.Application.Contracts\LINGYUN.Abp.WeChat.Official.Application.Contracts.csproj", "{6A652115-DED9-486E-BEA1-5F652C297359}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.Official.HttpApi", "framework\wechat\LINGYUN.Abp.WeChat.Official.HttpApi\LINGYUN.Abp.WeChat.Official.HttpApi.csproj", "{343E5900-511F-449B-95C1-7AC070395DB5}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.SettingManagement", "framework\wechat\LINGYUN.Abp.WeChat.SettingManagement\LINGYUN.Abp.WeChat.SettingManagement.csproj", "{5DA46CA5-C6F4-4C37-AB07-82A2C26DFC42}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.Work", "framework\wechat\LINGYUN.Abp.WeChat.Work\LINGYUN.Abp.WeChat.Work.csproj", "{785D6536-DE97-40C5-AEE3-65C529AAE39F}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.Work.Application", "framework\wechat\LINGYUN.Abp.WeChat.Work.Application\LINGYUN.Abp.WeChat.Work.Application.csproj", "{5E3BB07A-34C8-4C04-B5F5-A99F436F5934}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.Work.Application.Contracts", "framework\wechat\LINGYUN.Abp.WeChat.Work.Application.Contracts\LINGYUN.Abp.WeChat.Work.Application.Contracts.csproj", "{8D781A51-9B85-4B8D-B6E2-00020B4D744B}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.Work.Common", "framework\wechat\LINGYUN.Abp.WeChat.Work.Common\LINGYUN.Abp.WeChat.Work.Common.csproj", "{12486482-960D-44B3-828A-F2FF304618D5}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.Work.HttpApi", "framework\wechat\LINGYUN.Abp.WeChat.Work.HttpApi\LINGYUN.Abp.WeChat.Work.HttpApi.csproj", "{27A2DAE4-08EC-4121-ABF8-58F86E4AD747}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LY.MicroService.WechatManagement.HttpApi.Host", "services\LY.MicroService.WechatManagement.HttpApi.Host\LY.MicroService.WechatManagement.HttpApi.Host.csproj", "{23ADD956-A69D-494C-ABA0-1577DC46C72F}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "auditing", "auditing", "{DC3710B9-2B39-4B03-A21E-20282E6AC053}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "authorization", "authorization", "{1A4D7CDD-9F77-40A0-A384-44DE0503FA2E}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "common", "common", "{FFACB4F0-33E0-4F8B-A97E-8FFFA10C12E6}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Elasticsearch", "framework\elasticsearch\LINGYUN.Abp.Elasticsearch\LINGYUN.Abp.Elasticsearch.csproj", "{CF4286C8-DA7C-4B6F-A14A-F88D0C38225B}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "logging", "logging", "{D59249AA-A555-4AD0-A465-6835854628D9}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Serilog.Enrichers.Application", "framework\logging\LINGYUN.Abp.Serilog.Enrichers.Application\LINGYUN.Abp.Serilog.Enrichers.Application.csproj", "{7CAADF78-13ED-4832-B0F6-184EBAF4B162}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Serilog.Enrichers.UniqueId", "framework\logging\LINGYUN.Abp.Serilog.Enrichers.UniqueId\LINGYUN.Abp.Serilog.Enrichers.UniqueId.csproj", "{0943AFDE-B14C-412B-8AE5-9BCBA5031698}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AuditLogging.Elasticsearch", "framework\auditing\LINGYUN.Abp.AuditLogging.Elasticsearch\LINGYUN.Abp.AuditLogging.Elasticsearch.csproj", "{F1B094CC-E6FB-41F4-AC05-0D34360480A7}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AuditLogging", "framework\auditing\LINGYUN.Abp.AuditLogging\LINGYUN.Abp.AuditLogging.csproj", "{DB23FEC1-3253-47D5-999B-A8EB12C0B7E0}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Authorization.OrganizationUnits", "framework\authorization\LINGYUN.Abp.Authorization.OrganizationUnits\LINGYUN.Abp.Authorization.OrganizationUnits.csproj", "{F3F2AF55-FCB1-4A93-A010-FD506FF25BF3}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AspNetCore.HttpOverrides", "framework\common\LINGYUN.Abp.AspNetCore.HttpOverrides\LINGYUN.Abp.AspNetCore.HttpOverrides.csproj", "{10A83D35-D37F-4D21-A79D-5E03B95EE400}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "saas", "saas", "{EA746F97-941A-4D63-9EFB-230D78B965C2}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Saas.Domain.Shared", "modules\saas\LINGYUN.Abp.Saas.Domain.Shared\LINGYUN.Abp.Saas.Domain.Shared.csproj", "{8CB795F0-ED37-4D7B-BACA-DFAD667A865C}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Saas.Domain", "modules\saas\LINGYUN.Abp.Saas.Domain\LINGYUN.Abp.Saas.Domain.csproj", "{83B3E21A-5D8B-45E1-8E61-A00D87663A11}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Saas.EntityFrameworkCore", "modules\saas\LINGYUN.Abp.Saas.EntityFrameworkCore\LINGYUN.Abp.Saas.EntityFrameworkCore.csproj", "{87204045-FACA-44CF-ADF9-A716CF3B86B5}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tenants", "tenants", "{F5AFCEF2-B0D5-4138-A576-BE8033D9613C}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.MultiTenancy.Editions", "framework\tenants\LINGYUN.Abp.MultiTenancy.Editions\LINGYUN.Abp.MultiTenancy.Editions.csproj", "{8BEC3BF6-F80A-4B58-AA9F-5B4DA8B1D781}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.EventBus.CAP", "framework\common\LINGYUN.Abp.EventBus.CAP\LINGYUN.Abp.EventBus.CAP.csproj", "{48C72408-42E3-440B-B168-CE7F429872C2}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.ExceptionHandling", "framework\common\LINGYUN.Abp.ExceptionHandling\LINGYUN.Abp.ExceptionHandling.csproj", "{807A74FA-39D6-449D-8B1D-E8B10DF39447}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.ExceptionHandling.Emailing", "framework\common\LINGYUN.Abp.ExceptionHandling.Emailing\LINGYUN.Abp.ExceptionHandling.Emailing.csproj", "{FFE47B15-3FB8-4ADF-A7AD-96EC7DF4A7E8}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Wrapper", "framework\common\LINGYUN.Abp.Wrapper\LINGYUN.Abp.Wrapper.csproj", "{045015A5-4693-45E2-9EAB-F8DCD175036B}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "mvc", "mvc", "{FE68AF9E-D218-4601-A853-140D6AFEC314}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AspNetCore.Mvc.Wrapper", "framework\mvc\LINGYUN.Abp.AspNetCore.Mvc.Wrapper\LINGYUN.Abp.AspNetCore.Mvc.Wrapper.csproj", "{BB666C40-149E-4C17-B4D0-B585CE6C3794}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Http.Client.Wrapper", "framework\common\LINGYUN.Abp.Http.Client.Wrapper\LINGYUN.Abp.Http.Client.Wrapper.csproj", "{06FCEA82-C197-4392-80CE-2B5EEB9C4D6D}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AspNetCore.Wrapper", "framework\common\LINGYUN.Abp.AspNetCore.Wrapper\LINGYUN.Abp.AspNetCore.Wrapper.csproj", "{1E1696BE-8227-4CCD-9D05-A4C583680C9C}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Localization.CultureMap", "framework\localization\LINGYUN.Abp.Localization.CultureMap\LINGYUN.Abp.Localization.CultureMap.csproj", "{E5A995FD-2338-4D86-A269-FECB636583ED}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AspNetCore.Mvc.Localization", "framework\localization\LINGYUN.Abp.AspNetCore.Mvc.Localization\LINGYUN.Abp.AspNetCore.Mvc.Localization.csproj", "{B89C5DC7-0570-4D3D-8317-6C57AA310953}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Claims.Mapping", "framework\security\LINGYUN.Abp.Claims.Mapping\LINGYUN.Abp.Claims.Mapping.csproj", "{EDEB8139-F69D-42B2-9399-7E8F87A16F6F}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "identity", "identity", "{73ED64BB-7C39-42EA-B821-3DD697B9C36A}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.Session.AspNetCore", "modules\identity\LINGYUN.Abp.Identity.Session.AspNetCore\LINGYUN.Abp.Identity.Session.AspNetCore.csproj", "{8D21DEFE-2B3F-45F4-A440-B7C770EB16A0}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "localization", "localization", "{52701ECE-3EBD-45EC-AD2C-0AAB15322311}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.LocalizationManagement.Domain.Shared", "modules\localization-management\LINGYUN.Abp.LocalizationManagement.Domain.Shared\LINGYUN.Abp.LocalizationManagement.Domain.Shared.csproj", "{1251068B-DD70-4946-AD3A-40183523B9A2}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.LocalizationManagement.Domain", "modules\localization-management\LINGYUN.Abp.LocalizationManagement.Domain\LINGYUN.Abp.LocalizationManagement.Domain.csproj", "{37454EB7-9CE9-4250-92E4-7316F16B5328}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore", "modules\localization-management\LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore\LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore.csproj", "{CC8DDC8C-CC0C-4534-8D9F-2C345E065869}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.Session", "modules\identity\LINGYUN.Abp.Identity.Session\LINGYUN.Abp.Identity.Session.csproj", "{80EBBECC-EF11-4E5E-91DA-EEECED832F21}" |
|||
EndProject |
|||
Global |
|||
GlobalSection(SolutionConfigurationPlatforms) = preSolution |
|||
Debug|Any CPU = Debug|Any CPU |
|||
Release|Any CPU = Release|Any CPU |
|||
EndGlobalSection |
|||
GlobalSection(ProjectConfigurationPlatforms) = postSolution |
|||
{915E4DB5-8017-43C5-B547-08658F0ED488}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{915E4DB5-8017-43C5-B547-08658F0ED488}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{915E4DB5-8017-43C5-B547-08658F0ED488}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{915E4DB5-8017-43C5-B547-08658F0ED488}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{3E91B702-7EAD-423D-BCFF-8EE9886AB8E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{3E91B702-7EAD-423D-BCFF-8EE9886AB8E3}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{3E91B702-7EAD-423D-BCFF-8EE9886AB8E3}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{3E91B702-7EAD-423D-BCFF-8EE9886AB8E3}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{08361B78-A90E-45BD-8517-B64208D7DAA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{08361B78-A90E-45BD-8517-B64208D7DAA0}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{08361B78-A90E-45BD-8517-B64208D7DAA0}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{08361B78-A90E-45BD-8517-B64208D7DAA0}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{3F20CF07-12AE-49F4-84CE-F7BB99C519F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{3F20CF07-12AE-49F4-84CE-F7BB99C519F8}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{3F20CF07-12AE-49F4-84CE-F7BB99C519F8}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{3F20CF07-12AE-49F4-84CE-F7BB99C519F8}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{DC9E82AE-5AEC-4A9D-9D20-E0E6604A825E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{DC9E82AE-5AEC-4A9D-9D20-E0E6604A825E}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{DC9E82AE-5AEC-4A9D-9D20-E0E6604A825E}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{DC9E82AE-5AEC-4A9D-9D20-E0E6604A825E}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{6A652115-DED9-486E-BEA1-5F652C297359}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{6A652115-DED9-486E-BEA1-5F652C297359}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{6A652115-DED9-486E-BEA1-5F652C297359}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{6A652115-DED9-486E-BEA1-5F652C297359}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{343E5900-511F-449B-95C1-7AC070395DB5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{343E5900-511F-449B-95C1-7AC070395DB5}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{343E5900-511F-449B-95C1-7AC070395DB5}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{343E5900-511F-449B-95C1-7AC070395DB5}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{5DA46CA5-C6F4-4C37-AB07-82A2C26DFC42}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{5DA46CA5-C6F4-4C37-AB07-82A2C26DFC42}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{5DA46CA5-C6F4-4C37-AB07-82A2C26DFC42}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{5DA46CA5-C6F4-4C37-AB07-82A2C26DFC42}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{785D6536-DE97-40C5-AEE3-65C529AAE39F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{785D6536-DE97-40C5-AEE3-65C529AAE39F}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{785D6536-DE97-40C5-AEE3-65C529AAE39F}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{785D6536-DE97-40C5-AEE3-65C529AAE39F}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{5E3BB07A-34C8-4C04-B5F5-A99F436F5934}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{5E3BB07A-34C8-4C04-B5F5-A99F436F5934}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{5E3BB07A-34C8-4C04-B5F5-A99F436F5934}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{5E3BB07A-34C8-4C04-B5F5-A99F436F5934}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{8D781A51-9B85-4B8D-B6E2-00020B4D744B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{8D781A51-9B85-4B8D-B6E2-00020B4D744B}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{8D781A51-9B85-4B8D-B6E2-00020B4D744B}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{8D781A51-9B85-4B8D-B6E2-00020B4D744B}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{12486482-960D-44B3-828A-F2FF304618D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{12486482-960D-44B3-828A-F2FF304618D5}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{12486482-960D-44B3-828A-F2FF304618D5}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{12486482-960D-44B3-828A-F2FF304618D5}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{27A2DAE4-08EC-4121-ABF8-58F86E4AD747}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{27A2DAE4-08EC-4121-ABF8-58F86E4AD747}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{27A2DAE4-08EC-4121-ABF8-58F86E4AD747}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{27A2DAE4-08EC-4121-ABF8-58F86E4AD747}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{23ADD956-A69D-494C-ABA0-1577DC46C72F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{23ADD956-A69D-494C-ABA0-1577DC46C72F}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{23ADD956-A69D-494C-ABA0-1577DC46C72F}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{23ADD956-A69D-494C-ABA0-1577DC46C72F}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{CF4286C8-DA7C-4B6F-A14A-F88D0C38225B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{CF4286C8-DA7C-4B6F-A14A-F88D0C38225B}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{CF4286C8-DA7C-4B6F-A14A-F88D0C38225B}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{CF4286C8-DA7C-4B6F-A14A-F88D0C38225B}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{7CAADF78-13ED-4832-B0F6-184EBAF4B162}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{7CAADF78-13ED-4832-B0F6-184EBAF4B162}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{7CAADF78-13ED-4832-B0F6-184EBAF4B162}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{7CAADF78-13ED-4832-B0F6-184EBAF4B162}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{0943AFDE-B14C-412B-8AE5-9BCBA5031698}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{0943AFDE-B14C-412B-8AE5-9BCBA5031698}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{0943AFDE-B14C-412B-8AE5-9BCBA5031698}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{0943AFDE-B14C-412B-8AE5-9BCBA5031698}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{F1B094CC-E6FB-41F4-AC05-0D34360480A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{F1B094CC-E6FB-41F4-AC05-0D34360480A7}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{F1B094CC-E6FB-41F4-AC05-0D34360480A7}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{F1B094CC-E6FB-41F4-AC05-0D34360480A7}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{DB23FEC1-3253-47D5-999B-A8EB12C0B7E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{DB23FEC1-3253-47D5-999B-A8EB12C0B7E0}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{DB23FEC1-3253-47D5-999B-A8EB12C0B7E0}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{DB23FEC1-3253-47D5-999B-A8EB12C0B7E0}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{F3F2AF55-FCB1-4A93-A010-FD506FF25BF3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{F3F2AF55-FCB1-4A93-A010-FD506FF25BF3}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{F3F2AF55-FCB1-4A93-A010-FD506FF25BF3}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{F3F2AF55-FCB1-4A93-A010-FD506FF25BF3}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{10A83D35-D37F-4D21-A79D-5E03B95EE400}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{10A83D35-D37F-4D21-A79D-5E03B95EE400}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{10A83D35-D37F-4D21-A79D-5E03B95EE400}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{10A83D35-D37F-4D21-A79D-5E03B95EE400}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{8CB795F0-ED37-4D7B-BACA-DFAD667A865C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{8CB795F0-ED37-4D7B-BACA-DFAD667A865C}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{8CB795F0-ED37-4D7B-BACA-DFAD667A865C}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{8CB795F0-ED37-4D7B-BACA-DFAD667A865C}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{83B3E21A-5D8B-45E1-8E61-A00D87663A11}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{83B3E21A-5D8B-45E1-8E61-A00D87663A11}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{83B3E21A-5D8B-45E1-8E61-A00D87663A11}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{83B3E21A-5D8B-45E1-8E61-A00D87663A11}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{87204045-FACA-44CF-ADF9-A716CF3B86B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{87204045-FACA-44CF-ADF9-A716CF3B86B5}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{87204045-FACA-44CF-ADF9-A716CF3B86B5}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{87204045-FACA-44CF-ADF9-A716CF3B86B5}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{8BEC3BF6-F80A-4B58-AA9F-5B4DA8B1D781}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{8BEC3BF6-F80A-4B58-AA9F-5B4DA8B1D781}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{8BEC3BF6-F80A-4B58-AA9F-5B4DA8B1D781}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{8BEC3BF6-F80A-4B58-AA9F-5B4DA8B1D781}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{48C72408-42E3-440B-B168-CE7F429872C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{48C72408-42E3-440B-B168-CE7F429872C2}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{48C72408-42E3-440B-B168-CE7F429872C2}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{48C72408-42E3-440B-B168-CE7F429872C2}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{807A74FA-39D6-449D-8B1D-E8B10DF39447}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{807A74FA-39D6-449D-8B1D-E8B10DF39447}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{807A74FA-39D6-449D-8B1D-E8B10DF39447}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{807A74FA-39D6-449D-8B1D-E8B10DF39447}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{FFE47B15-3FB8-4ADF-A7AD-96EC7DF4A7E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{FFE47B15-3FB8-4ADF-A7AD-96EC7DF4A7E8}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{FFE47B15-3FB8-4ADF-A7AD-96EC7DF4A7E8}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{FFE47B15-3FB8-4ADF-A7AD-96EC7DF4A7E8}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{045015A5-4693-45E2-9EAB-F8DCD175036B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{045015A5-4693-45E2-9EAB-F8DCD175036B}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{045015A5-4693-45E2-9EAB-F8DCD175036B}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{045015A5-4693-45E2-9EAB-F8DCD175036B}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{BB666C40-149E-4C17-B4D0-B585CE6C3794}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{BB666C40-149E-4C17-B4D0-B585CE6C3794}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{BB666C40-149E-4C17-B4D0-B585CE6C3794}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{BB666C40-149E-4C17-B4D0-B585CE6C3794}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{06FCEA82-C197-4392-80CE-2B5EEB9C4D6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{06FCEA82-C197-4392-80CE-2B5EEB9C4D6D}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{06FCEA82-C197-4392-80CE-2B5EEB9C4D6D}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{06FCEA82-C197-4392-80CE-2B5EEB9C4D6D}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{1E1696BE-8227-4CCD-9D05-A4C583680C9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{1E1696BE-8227-4CCD-9D05-A4C583680C9C}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{1E1696BE-8227-4CCD-9D05-A4C583680C9C}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{1E1696BE-8227-4CCD-9D05-A4C583680C9C}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{E5A995FD-2338-4D86-A269-FECB636583ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{E5A995FD-2338-4D86-A269-FECB636583ED}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{E5A995FD-2338-4D86-A269-FECB636583ED}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{E5A995FD-2338-4D86-A269-FECB636583ED}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{B89C5DC7-0570-4D3D-8317-6C57AA310953}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{B89C5DC7-0570-4D3D-8317-6C57AA310953}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{B89C5DC7-0570-4D3D-8317-6C57AA310953}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{B89C5DC7-0570-4D3D-8317-6C57AA310953}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{EDEB8139-F69D-42B2-9399-7E8F87A16F6F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{EDEB8139-F69D-42B2-9399-7E8F87A16F6F}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{EDEB8139-F69D-42B2-9399-7E8F87A16F6F}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{EDEB8139-F69D-42B2-9399-7E8F87A16F6F}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{8D21DEFE-2B3F-45F4-A440-B7C770EB16A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{8D21DEFE-2B3F-45F4-A440-B7C770EB16A0}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{8D21DEFE-2B3F-45F4-A440-B7C770EB16A0}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{8D21DEFE-2B3F-45F4-A440-B7C770EB16A0}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{1251068B-DD70-4946-AD3A-40183523B9A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{1251068B-DD70-4946-AD3A-40183523B9A2}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{1251068B-DD70-4946-AD3A-40183523B9A2}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{1251068B-DD70-4946-AD3A-40183523B9A2}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{37454EB7-9CE9-4250-92E4-7316F16B5328}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{37454EB7-9CE9-4250-92E4-7316F16B5328}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{37454EB7-9CE9-4250-92E4-7316F16B5328}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{37454EB7-9CE9-4250-92E4-7316F16B5328}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{CC8DDC8C-CC0C-4534-8D9F-2C345E065869}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{CC8DDC8C-CC0C-4534-8D9F-2C345E065869}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{CC8DDC8C-CC0C-4534-8D9F-2C345E065869}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{CC8DDC8C-CC0C-4534-8D9F-2C345E065869}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{80EBBECC-EF11-4E5E-91DA-EEECED832F21}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{80EBBECC-EF11-4E5E-91DA-EEECED832F21}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{80EBBECC-EF11-4E5E-91DA-EEECED832F21}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{80EBBECC-EF11-4E5E-91DA-EEECED832F21}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
EndGlobalSection |
|||
GlobalSection(SolutionProperties) = preSolution |
|||
HideSolutionNode = FALSE |
|||
EndGlobalSection |
|||
GlobalSection(NestedProjects) = preSolution |
|||
{EDBB7BC1-46F0-4803-A572-7F8FEF433BE2} = {BD5616DF-D493-4170-8E78-46486BE77FC2} |
|||
{915E4DB5-8017-43C5-B547-08658F0ED488} = {EDBB7BC1-46F0-4803-A572-7F8FEF433BE2} |
|||
{3E91B702-7EAD-423D-BCFF-8EE9886AB8E3} = {EDBB7BC1-46F0-4803-A572-7F8FEF433BE2} |
|||
{08361B78-A90E-45BD-8517-B64208D7DAA0} = {EDBB7BC1-46F0-4803-A572-7F8FEF433BE2} |
|||
{3F20CF07-12AE-49F4-84CE-F7BB99C519F8} = {EDBB7BC1-46F0-4803-A572-7F8FEF433BE2} |
|||
{DC9E82AE-5AEC-4A9D-9D20-E0E6604A825E} = {EDBB7BC1-46F0-4803-A572-7F8FEF433BE2} |
|||
{6A652115-DED9-486E-BEA1-5F652C297359} = {EDBB7BC1-46F0-4803-A572-7F8FEF433BE2} |
|||
{343E5900-511F-449B-95C1-7AC070395DB5} = {EDBB7BC1-46F0-4803-A572-7F8FEF433BE2} |
|||
{5DA46CA5-C6F4-4C37-AB07-82A2C26DFC42} = {EDBB7BC1-46F0-4803-A572-7F8FEF433BE2} |
|||
{785D6536-DE97-40C5-AEE3-65C529AAE39F} = {EDBB7BC1-46F0-4803-A572-7F8FEF433BE2} |
|||
{5E3BB07A-34C8-4C04-B5F5-A99F436F5934} = {EDBB7BC1-46F0-4803-A572-7F8FEF433BE2} |
|||
{8D781A51-9B85-4B8D-B6E2-00020B4D744B} = {EDBB7BC1-46F0-4803-A572-7F8FEF433BE2} |
|||
{12486482-960D-44B3-828A-F2FF304618D5} = {EDBB7BC1-46F0-4803-A572-7F8FEF433BE2} |
|||
{27A2DAE4-08EC-4121-ABF8-58F86E4AD747} = {EDBB7BC1-46F0-4803-A572-7F8FEF433BE2} |
|||
{23ADD956-A69D-494C-ABA0-1577DC46C72F} = {1B7F2C6E-1712-4F22-989C-D56C7AEF7F16} |
|||
{DC3710B9-2B39-4B03-A21E-20282E6AC053} = {BD5616DF-D493-4170-8E78-46486BE77FC2} |
|||
{1A4D7CDD-9F77-40A0-A384-44DE0503FA2E} = {BD5616DF-D493-4170-8E78-46486BE77FC2} |
|||
{FFACB4F0-33E0-4F8B-A97E-8FFFA10C12E6} = {BD5616DF-D493-4170-8E78-46486BE77FC2} |
|||
{CF4286C8-DA7C-4B6F-A14A-F88D0C38225B} = {FFACB4F0-33E0-4F8B-A97E-8FFFA10C12E6} |
|||
{D59249AA-A555-4AD0-A465-6835854628D9} = {BD5616DF-D493-4170-8E78-46486BE77FC2} |
|||
{7CAADF78-13ED-4832-B0F6-184EBAF4B162} = {D59249AA-A555-4AD0-A465-6835854628D9} |
|||
{0943AFDE-B14C-412B-8AE5-9BCBA5031698} = {D59249AA-A555-4AD0-A465-6835854628D9} |
|||
{F1B094CC-E6FB-41F4-AC05-0D34360480A7} = {DC3710B9-2B39-4B03-A21E-20282E6AC053} |
|||
{DB23FEC1-3253-47D5-999B-A8EB12C0B7E0} = {DC3710B9-2B39-4B03-A21E-20282E6AC053} |
|||
{F3F2AF55-FCB1-4A93-A010-FD506FF25BF3} = {1A4D7CDD-9F77-40A0-A384-44DE0503FA2E} |
|||
{10A83D35-D37F-4D21-A79D-5E03B95EE400} = {FFACB4F0-33E0-4F8B-A97E-8FFFA10C12E6} |
|||
{EA746F97-941A-4D63-9EFB-230D78B965C2} = {EDB927C3-0589-4DAD-B5FE-5A4B5C727122} |
|||
{8CB795F0-ED37-4D7B-BACA-DFAD667A865C} = {EA746F97-941A-4D63-9EFB-230D78B965C2} |
|||
{83B3E21A-5D8B-45E1-8E61-A00D87663A11} = {EA746F97-941A-4D63-9EFB-230D78B965C2} |
|||
{87204045-FACA-44CF-ADF9-A716CF3B86B5} = {EA746F97-941A-4D63-9EFB-230D78B965C2} |
|||
{F5AFCEF2-B0D5-4138-A576-BE8033D9613C} = {BD5616DF-D493-4170-8E78-46486BE77FC2} |
|||
{8BEC3BF6-F80A-4B58-AA9F-5B4DA8B1D781} = {F5AFCEF2-B0D5-4138-A576-BE8033D9613C} |
|||
{48C72408-42E3-440B-B168-CE7F429872C2} = {FFACB4F0-33E0-4F8B-A97E-8FFFA10C12E6} |
|||
{807A74FA-39D6-449D-8B1D-E8B10DF39447} = {FFACB4F0-33E0-4F8B-A97E-8FFFA10C12E6} |
|||
{FFE47B15-3FB8-4ADF-A7AD-96EC7DF4A7E8} = {FFACB4F0-33E0-4F8B-A97E-8FFFA10C12E6} |
|||
{045015A5-4693-45E2-9EAB-F8DCD175036B} = {FFACB4F0-33E0-4F8B-A97E-8FFFA10C12E6} |
|||
{FE68AF9E-D218-4601-A853-140D6AFEC314} = {BD5616DF-D493-4170-8E78-46486BE77FC2} |
|||
{BB666C40-149E-4C17-B4D0-B585CE6C3794} = {FE68AF9E-D218-4601-A853-140D6AFEC314} |
|||
{06FCEA82-C197-4392-80CE-2B5EEB9C4D6D} = {FFACB4F0-33E0-4F8B-A97E-8FFFA10C12E6} |
|||
{1E1696BE-8227-4CCD-9D05-A4C583680C9C} = {FFACB4F0-33E0-4F8B-A97E-8FFFA10C12E6} |
|||
{E5A995FD-2338-4D86-A269-FECB636583ED} = {FFACB4F0-33E0-4F8B-A97E-8FFFA10C12E6} |
|||
{B89C5DC7-0570-4D3D-8317-6C57AA310953} = {FE68AF9E-D218-4601-A853-140D6AFEC314} |
|||
{EDEB8139-F69D-42B2-9399-7E8F87A16F6F} = {FFACB4F0-33E0-4F8B-A97E-8FFFA10C12E6} |
|||
{73ED64BB-7C39-42EA-B821-3DD697B9C36A} = {EDB927C3-0589-4DAD-B5FE-5A4B5C727122} |
|||
{8D21DEFE-2B3F-45F4-A440-B7C770EB16A0} = {73ED64BB-7C39-42EA-B821-3DD697B9C36A} |
|||
{52701ECE-3EBD-45EC-AD2C-0AAB15322311} = {EDB927C3-0589-4DAD-B5FE-5A4B5C727122} |
|||
{1251068B-DD70-4946-AD3A-40183523B9A2} = {52701ECE-3EBD-45EC-AD2C-0AAB15322311} |
|||
{37454EB7-9CE9-4250-92E4-7316F16B5328} = {52701ECE-3EBD-45EC-AD2C-0AAB15322311} |
|||
{CC8DDC8C-CC0C-4534-8D9F-2C345E065869} = {52701ECE-3EBD-45EC-AD2C-0AAB15322311} |
|||
{80EBBECC-EF11-4E5E-91DA-EEECED832F21} = {73ED64BB-7C39-42EA-B821-3DD697B9C36A} |
|||
EndGlobalSection |
|||
GlobalSection(ExtensibilityGlobals) = postSolution |
|||
SolutionGuid = {EC9D01C1-EA3C-48C7-A279-4D35C8AD312E} |
|||
EndGlobalSection |
|||
EndGlobal |
|||
@ -0,0 +1,3 @@ |
|||
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd"> |
|||
<ConfigureAwait ContinueOnCapturedContext="false" /> |
|||
</Weavers> |
|||
@ -0,0 +1,30 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> |
|||
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. --> |
|||
<xs:element name="Weavers"> |
|||
<xs:complexType> |
|||
<xs:all> |
|||
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1"> |
|||
<xs:complexType> |
|||
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" /> |
|||
</xs:complexType> |
|||
</xs:element> |
|||
</xs:all> |
|||
<xs:attribute name="VerifyAssembly" type="xs:boolean"> |
|||
<xs:annotation> |
|||
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation> |
|||
</xs:annotation> |
|||
</xs:attribute> |
|||
<xs:attribute name="VerifyIgnoreCodes" type="xs:string"> |
|||
<xs:annotation> |
|||
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation> |
|||
</xs:annotation> |
|||
</xs:attribute> |
|||
<xs:attribute name="GenerateXsd" type="xs:boolean"> |
|||
<xs:annotation> |
|||
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation> |
|||
</xs:annotation> |
|||
</xs:attribute> |
|||
</xs:complexType> |
|||
</xs:element> |
|||
</xs:schema> |
|||
@ -0,0 +1,20 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\..\configureawait.props" /> |
|||
<Import Project="..\..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFrameworks>netstandard2.0;netstandard2.1;net8.0</TargetFrameworks> |
|||
<AssemblyName>LINGYUN.Abp.WeChat.Official.Handlers</AssemblyName> |
|||
<PackageId>LINGYUN.Abp.WeChat.Official.Handlers</PackageId> |
|||
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute> |
|||
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute> |
|||
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\LINGYUN.Abp.WeChat.Official\LINGYUN.Abp.WeChat.Official.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
@ -0,0 +1,10 @@ |
|||
using Volo.Abp.EventBus; |
|||
using Volo.Abp.Modularity; |
|||
|
|||
namespace LINGYUN.Abp.WeChat.Official.Handlers; |
|||
|
|||
[DependsOn(typeof(AbpEventBusModule))] |
|||
[DependsOn(typeof(AbpWeChatOfficialModule))] |
|||
public class AbpWeChatOfficialHandlersModule : AbpModule |
|||
{ |
|||
} |
|||
@ -1,11 +1,11 @@ |
|||
using LINGYUN.Abp.WeChat.Common.Messages; |
|||
using LINGYUN.Abp.WeChat.Common.Messages.Handlers; |
|||
using LINGYUN.Abp.WeChat.Common.Messages.Handlers; |
|||
using LINGYUN.Abp.WeChat.Official.Messages; |
|||
using LINGYUN.Abp.WeChat.Official.Messages.Models; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.EventBus.Distributed; |
|||
|
|||
namespace LINGYUN.Abp.WeChat.Official.Messages.Handlers; |
|||
namespace LINGYUN.Abp.WeChat.Official.Handlers.Messages; |
|||
public class WeChatOfficialEventEventHandler : |
|||
IDistributedEventHandler<WeChatOfficialEventMessageEto<CustomMenuEvent>>, |
|||
IDistributedEventHandler<WeChatOfficialEventMessageEto<UserSubscribeEvent>>, |
|||
@ -1,11 +1,11 @@ |
|||
using LINGYUN.Abp.WeChat.Common.Messages; |
|||
using LINGYUN.Abp.WeChat.Common.Messages.Handlers; |
|||
using LINGYUN.Abp.WeChat.Common.Messages.Handlers; |
|||
using LINGYUN.Abp.WeChat.Official.Messages; |
|||
using LINGYUN.Abp.WeChat.Official.Messages.Models; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.EventBus.Distributed; |
|||
|
|||
namespace LINGYUN.Abp.WeChat.Official.Messages.Handlers; |
|||
namespace LINGYUN.Abp.WeChat.Official.Handlers.Messages; |
|||
public class WeChatOfficialMessageEventHandler : |
|||
IDistributedEventHandler<WeChatOfficialGeneralMessageEto<TextMessage>>, |
|||
IDistributedEventHandler<WeChatOfficialGeneralMessageEto<LinkMessage>>, |
|||
@ -0,0 +1,3 @@ |
|||
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd"> |
|||
<ConfigureAwait ContinueOnCapturedContext="false" /> |
|||
</Weavers> |
|||
@ -0,0 +1,30 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> |
|||
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. --> |
|||
<xs:element name="Weavers"> |
|||
<xs:complexType> |
|||
<xs:all> |
|||
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1"> |
|||
<xs:complexType> |
|||
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" /> |
|||
</xs:complexType> |
|||
</xs:element> |
|||
</xs:all> |
|||
<xs:attribute name="VerifyAssembly" type="xs:boolean"> |
|||
<xs:annotation> |
|||
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation> |
|||
</xs:annotation> |
|||
</xs:attribute> |
|||
<xs:attribute name="VerifyIgnoreCodes" type="xs:string"> |
|||
<xs:annotation> |
|||
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation> |
|||
</xs:annotation> |
|||
</xs:attribute> |
|||
<xs:attribute name="GenerateXsd" type="xs:boolean"> |
|||
<xs:annotation> |
|||
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation> |
|||
</xs:annotation> |
|||
</xs:attribute> |
|||
</xs:complexType> |
|||
</xs:element> |
|||
</xs:schema> |
|||
@ -0,0 +1,20 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\..\configureawait.props" /> |
|||
<Import Project="..\..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFrameworks>netstandard2.0;netstandard2.1;net8.0</TargetFrameworks> |
|||
<AssemblyName>LINGYUN.Abp.WeChat.Work.Handlers</AssemblyName> |
|||
<PackageId>LINGYUN.Abp.WeChat.Work.Handlers</PackageId> |
|||
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute> |
|||
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute> |
|||
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\LINGYUN.Abp.WeChat.Work.Common\LINGYUN.Abp.WeChat.Work.Common.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
@ -0,0 +1,11 @@ |
|||
using LINGYUN.Abp.WeChat.Work.Common; |
|||
using Volo.Abp.EventBus; |
|||
using Volo.Abp.Modularity; |
|||
|
|||
namespace LINGYUN.Abp.WeChat.Work.Handlers; |
|||
|
|||
[DependsOn(typeof(AbpEventBusModule))] |
|||
[DependsOn(typeof(AbpWeChatWorkCommonModule))] |
|||
public class AbpWeChatWorkHandlersModule : AbpModule |
|||
{ |
|||
} |
|||
@ -1,10 +1,11 @@ |
|||
using LINGYUN.Abp.WeChat.Common.Messages.Handlers; |
|||
using LINGYUN.Abp.WeChat.Work.Common.Messages; |
|||
using LINGYUN.Abp.WeChat.Work.Common.Messages.Models; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.EventBus.Distributed; |
|||
|
|||
namespace LINGYUN.Abp.WeChat.Work.Common.Messages.Handlers; |
|||
namespace LINGYUN.Abp.WeChat.Work.Handlers.Messages; |
|||
public class WeChatWorkEventEventHandler : |
|||
IDistributedEventHandler<WeChatWorkEventMessageEto<CustomMenuPushEvent>>, |
|||
IDistributedEventHandler<WeChatWorkEventMessageEto<MenuClickJumpLinkPushEvent>>, |
|||
@ -1,10 +1,11 @@ |
|||
using LINGYUN.Abp.WeChat.Common.Messages.Handlers; |
|||
using LINGYUN.Abp.WeChat.Work.Common.Messages; |
|||
using LINGYUN.Abp.WeChat.Work.Common.Messages.Models; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.EventBus.Distributed; |
|||
|
|||
namespace LINGYUN.Abp.WeChat.Work.Common.Messages.Handlers; |
|||
namespace LINGYUN.Abp.WeChat.Work.Handlers.Messages; |
|||
public class WeChatWorkMessageEventHandler : |
|||
IDistributedEventHandler<WeChatWorkGeneralMessageEto<TextMessage>>, |
|||
IDistributedEventHandler<WeChatWorkGeneralMessageEto<LinkMessage>>, |
|||
@ -0,0 +1,12 @@ |
|||
using Microsoft.AspNetCore.Mvc; |
|||
using Volo.Abp.AspNetCore.Mvc; |
|||
|
|||
namespace LY.MicroService.WechatManagement.Controllers; |
|||
|
|||
public class HomeController : AbpControllerBase |
|||
{ |
|||
public IActionResult Index() |
|||
{ |
|||
return Redirect("/swagger/index.html"); |
|||
} |
|||
} |
|||
@ -0,0 +1,15 @@ |
|||
FROM mcr.microsoft.com/dotnet/aspnet:8.0 |
|||
LABEL maintainer="colin.in@foxmail.com" |
|||
WORKDIR /app |
|||
|
|||
COPY . /app |
|||
|
|||
EXPOSE 80/tcp |
|||
VOLUME [ "./app/Logs" ] |
|||
VOLUME [ "./app/Modules" ] |
|||
|
|||
|
|||
RUN apt update |
|||
RUN apt install wget -y |
|||
|
|||
ENTRYPOINT ["dotnet", "LY.MicroService.WechatManagement.HttpApi.Host.dll"] |
|||
@ -0,0 +1,76 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk.Web"> |
|||
|
|||
<Import Project="..\..\..\common.secrets.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>net8.0</TargetFramework> |
|||
<RootNamespace>LY.MicroService.WechatManagement</RootNamespace> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="AgileConfig.Client" /> |
|||
<PackageReference Include="DotNetCore.CAP.Dashboard" /> |
|||
<PackageReference Include="DotNetCore.CAP.MySql" /> |
|||
<PackageReference Include="DotNetCore.CAP.RabbitMQ" /> |
|||
<PackageReference Include="DotNetCore.CAP.OpenTelemetry" /> |
|||
<PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" /> |
|||
<PackageReference Include="DistributedLock.Redis" /> |
|||
<PackageReference Include="OpenTelemetry.Extensions.Hosting" /> |
|||
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" /> |
|||
<PackageReference Include="OpenTelemetry.Exporter.Zipkin" /> |
|||
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" /> |
|||
<PackageReference Include="OpenTelemetry.Instrumentation.Http" /> |
|||
<PackageReference Include="OpenTelemetry.Instrumentation.Runtime" /> |
|||
<PackageReference Include="OpenTelemetry.Instrumentation.EntityFrameworkCore" /> |
|||
<PackageReference Include="Quartz.Serialization.Json" /> |
|||
<PackageReference Include="Serilog.AspNetCore" /> |
|||
<PackageReference Include="Serilog.Enrichers.Environment" /> |
|||
<PackageReference Include="Serilog.Enrichers.Assembly" /> |
|||
<PackageReference Include="Serilog.Enrichers.Process" /> |
|||
<PackageReference Include="Serilog.Enrichers.Thread" /> |
|||
<PackageReference Include="Serilog.Settings.Configuration" /> |
|||
<PackageReference Include="Serilog.Sinks.Elasticsearch" /> |
|||
<PackageReference Include="Serilog.Sinks.File" /> |
|||
<PackageReference Include="Volo.Abp.AspNetCore.Serilog" /> |
|||
<PackageReference Include="Volo.Abp.Caching.StackExchangeRedis" /> |
|||
<PackageReference Include="Volo.Abp.AspNetCore.MultiTenancy" /> |
|||
<PackageReference Include="Volo.Abp.AspNetCore.Authentication.JwtBearer" /> |
|||
<PackageReference Include="Volo.Abp.Autofac" /> |
|||
<PackageReference Include="Volo.Abp.DistributedLocking" /> |
|||
<PackageReference Include="Volo.Abp.Swashbuckle" /> |
|||
<PackageReference Include="Volo.Abp.EntityFrameworkCore.MySql" /> |
|||
<PackageReference Include="Volo.Abp.Http.Client.IdentityModel.Web" /> |
|||
<PackageReference Include="Volo.Abp.FeatureManagement.EntityFrameworkCore" /> |
|||
<PackageReference Include="Volo.Abp.PermissionManagement.EntityFrameworkCore" /> |
|||
<PackageReference Include="Volo.Abp.SettingManagement.EntityFrameworkCore" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\..\framework\authorization\LINGYUN.Abp.Authorization.OrganizationUnits\LINGYUN.Abp.Authorization.OrganizationUnits.csproj" /> |
|||
<ProjectReference Include="..\..\framework\common\LINGYUN.Abp.AspNetCore.HttpOverrides\LINGYUN.Abp.AspNetCore.HttpOverrides.csproj" /> |
|||
<ProjectReference Include="..\..\framework\common\LINGYUN.Abp.EventBus.CAP\LINGYUN.Abp.EventBus.CAP.csproj" /> |
|||
<ProjectReference Include="..\..\framework\common\LINGYUN.Abp.ExceptionHandling.Emailing\LINGYUN.Abp.ExceptionHandling.Emailing.csproj" /> |
|||
<ProjectReference Include="..\..\framework\common\LINGYUN.Abp.Http.Client.Wrapper\LINGYUN.Abp.Http.Client.Wrapper.csproj" /> |
|||
<ProjectReference Include="..\..\framework\mvc\LINGYUN.Abp.AspNetCore.Mvc.Wrapper\LINGYUN.Abp.AspNetCore.Mvc.Wrapper.csproj" /> |
|||
<ProjectReference Include="..\..\framework\auditing\LINGYUN.Abp.AuditLogging.Elasticsearch\LINGYUN.Abp.AuditLogging.Elasticsearch.csproj" /> |
|||
<ProjectReference Include="..\..\framework\logging\LINGYUN.Abp.Serilog.Enrichers.Application\LINGYUN.Abp.Serilog.Enrichers.Application.csproj" /> |
|||
<ProjectReference Include="..\..\framework\logging\LINGYUN.Abp.Serilog.Enrichers.UniqueId\LINGYUN.Abp.Serilog.Enrichers.UniqueId.csproj" /> |
|||
<ProjectReference Include="..\..\framework\localization\LINGYUN.Abp.Localization.CultureMap\LINGYUN.Abp.Localization.CultureMap.csproj" /> |
|||
<ProjectReference Include="..\..\framework\localization\LINGYUN.Abp.AspNetCore.Mvc.Localization\LINGYUN.Abp.AspNetCore.Mvc.Localization.csproj" /> |
|||
<ProjectReference Include="..\..\framework\security\LINGYUN.Abp.Claims.Mapping\LINGYUN.Abp.Claims.Mapping.csproj" /> |
|||
<ProjectReference Include="..\..\framework\tenants\LINGYUN.Abp.MultiTenancy.Editions\LINGYUN.Abp.MultiTenancy.Editions.csproj" /> |
|||
<ProjectReference Include="..\..\framework\wechat\LINGYUN.Abp.WeChat.MiniProgram\LINGYUN.Abp.WeChat.MiniProgram.csproj" /> |
|||
<ProjectReference Include="..\..\framework\wechat\LINGYUN.Abp.WeChat.Official.Application\LINGYUN.Abp.WeChat.Official.Application.csproj" /> |
|||
<ProjectReference Include="..\..\framework\wechat\LINGYUN.Abp.WeChat.Official.HttpApi\LINGYUN.Abp.WeChat.Official.HttpApi.csproj" /> |
|||
<ProjectReference Include="..\..\framework\wechat\LINGYUN.Abp.WeChat.SettingManagement\LINGYUN.Abp.WeChat.SettingManagement.csproj" /> |
|||
<ProjectReference Include="..\..\framework\wechat\LINGYUN.Abp.WeChat.Work.Application\LINGYUN.Abp.WeChat.Work.Application.csproj" /> |
|||
<ProjectReference Include="..\..\framework\wechat\LINGYUN.Abp.WeChat.Work.HttpApi\LINGYUN.Abp.WeChat.Work.HttpApi.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\..\modules\identity\LINGYUN.Abp.Identity.Session.AspNetCore\LINGYUN.Abp.Identity.Session.AspNetCore.csproj" /> |
|||
<ProjectReference Include="..\..\modules\localization-management\LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore\LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore.csproj" /> |
|||
<ProjectReference Include="..\..\modules\saas\LINGYUN.Abp.Saas.EntityFrameworkCore\LINGYUN.Abp.Saas.EntityFrameworkCore.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
@ -0,0 +1,66 @@ |
|||
using LY.MicroService.WechatManagement; |
|||
using Microsoft.AspNetCore.Builder; |
|||
using Microsoft.AspNetCore.Hosting; |
|||
using Microsoft.Extensions.DependencyInjection; |
|||
using Microsoft.Extensions.Hosting; |
|||
using Serilog; |
|||
using System; |
|||
using System.IO; |
|||
using Volo.Abp.IO; |
|||
using Volo.Abp.Modularity.PlugIns; |
|||
|
|||
try |
|||
{ |
|||
Console.Title = "Web.Host"; |
|||
Log.Information("Starting web host."); |
|||
|
|||
var builder = WebApplication.CreateBuilder(args); |
|||
builder.Host.AddAppSettingsSecretsJson() |
|||
.UseAutofac() |
|||
.ConfigureAppConfiguration((context, config) => |
|||
{ |
|||
var configuration = config.Build(); |
|||
var agileConfigEnabled = configuration["AgileConfig:IsEnabled"]; |
|||
if (agileConfigEnabled.IsNullOrEmpty() || bool.Parse(agileConfigEnabled)) |
|||
{ |
|||
config.AddAgileConfig(new AgileConfig.Client.ConfigClient(configuration)); |
|||
} |
|||
}) |
|||
.UseSerilog((context, provider, config) => |
|||
{ |
|||
config.ReadFrom.Configuration(context.Configuration); |
|||
}); |
|||
await builder.AddApplicationAsync<WechatManagementHttpApiHostModule>(options => |
|||
{ |
|||
WechatManagementHttpApiHostModule.ApplicationName = Environment.GetEnvironmentVariable("APPLICATION_NAME") |
|||
?? WechatManagementHttpApiHostModule.ApplicationName; |
|||
options.ApplicationName = WechatManagementHttpApiHostModule.ApplicationName; |
|||
// 从环境变量取用户机密配置, 适用于容器测试
|
|||
options.Configuration.UserSecretsId = Environment.GetEnvironmentVariable("APPLICATION_USER_SECRETS_ID"); |
|||
// 如果容器没有指定用户机密, 从项目读取
|
|||
options.Configuration.UserSecretsAssembly = typeof(WechatManagementHttpApiHostModule).Assembly; |
|||
// 搜索 Modules 目录下所有文件作为插件
|
|||
// 取消显示引用所有其他项目的模块,改为通过插件的形式引用
|
|||
var pluginFolder = Path.Combine( |
|||
Directory.GetCurrentDirectory(), "Modules"); |
|||
DirectoryHelper.CreateIfNotExists(pluginFolder); |
|||
options.PlugInSources.AddFolder( |
|||
pluginFolder, |
|||
SearchOption.AllDirectories); |
|||
}); |
|||
var app = builder.Build(); |
|||
await app.InitializeApplicationAsync(); |
|||
await app.RunAsync(); |
|||
return 0; |
|||
} |
|||
catch (Exception ex) |
|||
{ |
|||
Log.Fatal(ex, "Host terminated unexpectedly!"); |
|||
Console.WriteLine("Host terminated unexpectedly!"); |
|||
Console.WriteLine(ex.ToString()); |
|||
return 1; |
|||
} |
|||
finally |
|||
{ |
|||
Log.CloseAndFlush(); |
|||
} |
|||
@ -0,0 +1,22 @@ |
|||
{ |
|||
"$schema": "http://json.schemastore.org/launchsettings.json", |
|||
"iisSettings": { |
|||
"windowsAuthentication": false, |
|||
"anonymousAuthentication": true, |
|||
"iisExpress": { |
|||
"applicationUrl": "http://localhost:16267", |
|||
"sslPort": 0 |
|||
} |
|||
}, |
|||
"profiles": { |
|||
"http": { |
|||
"commandName": "Project", |
|||
"dotnetRunMessages": true, |
|||
"launchBrowser": false, |
|||
"applicationUrl": "http://127.0.0.1:30060", |
|||
"environmentVariables": { |
|||
"ASPNETCORE_ENVIRONMENT": "Development" |
|||
} |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,36 @@ |
|||
using Microsoft.Extensions.Options; |
|||
using Microsoft.OpenApi.Models; |
|||
using Swashbuckle.AspNetCore.SwaggerGen; |
|||
using System.Collections.Generic; |
|||
using Volo.Abp.AspNetCore.MultiTenancy; |
|||
using Volo.Abp.MultiTenancy; |
|||
|
|||
namespace LY.MicroService.WechatManagement; |
|||
|
|||
public class TenantHeaderParamter : IOperationFilter |
|||
{ |
|||
private readonly AbpMultiTenancyOptions _multiTenancyOptions; |
|||
private readonly AbpAspNetCoreMultiTenancyOptions _aspNetCoreMultiTenancyOptions; |
|||
public TenantHeaderParamter( |
|||
IOptions<AbpMultiTenancyOptions> multiTenancyOptions, |
|||
IOptions<AbpAspNetCoreMultiTenancyOptions> aspNetCoreMultiTenancyOptions) |
|||
{ |
|||
_multiTenancyOptions = multiTenancyOptions.Value; |
|||
_aspNetCoreMultiTenancyOptions = aspNetCoreMultiTenancyOptions.Value; |
|||
} |
|||
|
|||
public void Apply(OpenApiOperation operation, OperationFilterContext context) |
|||
{ |
|||
if (_multiTenancyOptions.IsEnabled) |
|||
{ |
|||
operation.Parameters = operation.Parameters ?? new List<OpenApiParameter>(); |
|||
operation.Parameters.Add(new OpenApiParameter |
|||
{ |
|||
Name = _aspNetCoreMultiTenancyOptions.TenantKey, |
|||
In = ParameterLocation.Header, |
|||
Description = "Tenant Id/Name in http header", |
|||
Required = false |
|||
}); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,450 @@ |
|||
using DotNetCore.CAP; |
|||
using LINGYUN.Abp.ExceptionHandling; |
|||
using LINGYUN.Abp.ExceptionHandling.Emailing; |
|||
using LINGYUN.Abp.Localization.CultureMap; |
|||
using LINGYUN.Abp.Serilog.Enrichers.Application; |
|||
using LINGYUN.Abp.Serilog.Enrichers.UniqueId; |
|||
using LINGYUN.Abp.WeChat.Common.Localization; |
|||
using LINGYUN.Abp.WeChat.Work.Localization; |
|||
using LINGYUN.Abp.Wrapper; |
|||
using Medallion.Threading; |
|||
using Medallion.Threading.Redis; |
|||
using Microsoft.AspNetCore.Authentication.JwtBearer; |
|||
using Microsoft.AspNetCore.Builder; |
|||
using Microsoft.AspNetCore.DataProtection; |
|||
using Microsoft.AspNetCore.Routing; |
|||
using Microsoft.Extensions.Caching.StackExchangeRedis; |
|||
using Microsoft.Extensions.Configuration; |
|||
using Microsoft.Extensions.DependencyInjection; |
|||
using Microsoft.IdentityModel.Logging; |
|||
using Microsoft.OpenApi.Models; |
|||
using OpenTelemetry.Metrics; |
|||
using OpenTelemetry.Resources; |
|||
using OpenTelemetry.Trace; |
|||
using StackExchange.Redis; |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.IO; |
|||
using System.Text.Encodings.Web; |
|||
using System.Text.Unicode; |
|||
using Volo.Abp; |
|||
using Volo.Abp.AspNetCore.Mvc; |
|||
using Volo.Abp.Auditing; |
|||
using Volo.Abp.Caching; |
|||
using Volo.Abp.EntityFrameworkCore; |
|||
using Volo.Abp.FeatureManagement; |
|||
using Volo.Abp.GlobalFeatures; |
|||
using Volo.Abp.Http.Client; |
|||
using Volo.Abp.Json; |
|||
using Volo.Abp.Json.SystemTextJson; |
|||
using Volo.Abp.Localization; |
|||
using Volo.Abp.MultiTenancy; |
|||
using Volo.Abp.PermissionManagement; |
|||
using Volo.Abp.Security.Claims; |
|||
using Volo.Abp.SettingManagement; |
|||
using Volo.Abp.Threading; |
|||
using Volo.Abp.Timing; |
|||
using Volo.Abp.VirtualFileSystem; |
|||
|
|||
namespace LY.MicroService.WechatManagement; |
|||
|
|||
public partial class WechatManagementHttpApiHostModule |
|||
{ |
|||
public static string ApplicationName { get; set; } = "WechatService"; |
|||
private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner(); |
|||
|
|||
private void PreConfigureFeature() |
|||
{ |
|||
OneTimeRunner.Run(() => |
|||
{ |
|||
GlobalFeatureManager.Instance.Modules.Editions().EnableAll(); |
|||
}); |
|||
} |
|||
|
|||
private void PreForwardedHeaders() |
|||
{ |
|||
} |
|||
|
|||
private void PreConfigureApp(IConfiguration configuration) |
|||
{ |
|||
AbpSerilogEnrichersConsts.ApplicationName = ApplicationName; |
|||
|
|||
PreConfigure<AbpSerilogEnrichersUniqueIdOptions>(options => |
|||
{ |
|||
// 以开放端口区别
|
|||
options.SnowflakeIdOptions.WorkerId = 11; |
|||
options.SnowflakeIdOptions.WorkerIdBits = 5; |
|||
options.SnowflakeIdOptions.DatacenterId = 1; |
|||
}); |
|||
|
|||
if (configuration.GetValue<bool>("App:ShowPii")) |
|||
{ |
|||
IdentityModelEventSource.ShowPII = true; |
|||
} |
|||
} |
|||
|
|||
private void PreConfigureCAP(IConfiguration configuration) |
|||
{ |
|||
PreConfigure<CapOptions>(options => |
|||
{ |
|||
options |
|||
.UseMySql(sqlOptions => |
|||
{ |
|||
configuration.GetSection("CAP:MySql").Bind(sqlOptions); |
|||
}) |
|||
.UseRabbitMQ(rabbitMQOptions => |
|||
{ |
|||
configuration.GetSection("CAP:RabbitMQ").Bind(rabbitMQOptions); |
|||
}) |
|||
.UseDashboard(); |
|||
}); |
|||
} |
|||
|
|||
private void ConfigureDbContext() |
|||
{ |
|||
// 配置Ef
|
|||
Configure<AbpDbContextOptions>(options => |
|||
{ |
|||
options.UseMySQL(); |
|||
//options.Configure(cfg =>
|
|||
//{
|
|||
// cfg.UseMySQL();
|
|||
// cfg.DbContextOptions.EnableSensitiveDataLogging();
|
|||
//});
|
|||
}); |
|||
} |
|||
|
|||
private void ConfigureJsonSerializer(IConfiguration configuration) |
|||
{ |
|||
// 统一时间日期格式
|
|||
Configure<AbpJsonOptions>(options => |
|||
{ |
|||
var jsonConfiguration = configuration.GetSection("Json"); |
|||
if (jsonConfiguration.Exists()) |
|||
{ |
|||
jsonConfiguration.Bind(options); |
|||
} |
|||
}); |
|||
// 中文序列化的编码问题
|
|||
Configure<AbpSystemTextJsonSerializerOptions>(options => |
|||
{ |
|||
options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All); |
|||
}); |
|||
} |
|||
|
|||
private void ConfigureDistributedLock(IServiceCollection services, IConfiguration configuration) |
|||
{ |
|||
var distributedLockEnabled = configuration["DistributedLock:IsEnabled"]; |
|||
if (distributedLockEnabled.IsNullOrEmpty() || bool.Parse(distributedLockEnabled)) |
|||
{ |
|||
var redis = ConnectionMultiplexer.Connect(configuration["DistributedLock:Redis:Configuration"]); |
|||
services.AddSingleton<IDistributedLockProvider>(_ => new RedisDistributedSynchronizationProvider(redis.GetDatabase())); |
|||
} |
|||
} |
|||
|
|||
private void ConfigureOpenTelemetry(IServiceCollection services, IConfiguration configuration) |
|||
{ |
|||
var openTelemetryEnabled = configuration["OpenTelemetry:IsEnabled"]; |
|||
if (openTelemetryEnabled.IsNullOrEmpty() || bool.Parse(openTelemetryEnabled)) |
|||
{ |
|||
services.AddOpenTelemetry() |
|||
.ConfigureResource(resource => |
|||
{ |
|||
resource.AddService(ApplicationName); |
|||
}) |
|||
.WithTracing(tracing => |
|||
{ |
|||
tracing.AddHttpClientInstrumentation(); |
|||
tracing.AddAspNetCoreInstrumentation(); |
|||
tracing.AddCapInstrumentation(); |
|||
tracing.AddEntityFrameworkCoreInstrumentation(); |
|||
tracing.AddSource(ApplicationName); |
|||
|
|||
var tracingOtlpEndpoint = configuration["OpenTelemetry:Otlp:Endpoint"]; |
|||
if (!tracingOtlpEndpoint.IsNullOrWhiteSpace()) |
|||
{ |
|||
tracing.AddOtlpExporter(otlpOptions => |
|||
{ |
|||
otlpOptions.Endpoint = new Uri(tracingOtlpEndpoint); |
|||
}); |
|||
return; |
|||
} |
|||
|
|||
var zipkinEndpoint = configuration["OpenTelemetry:ZipKin:Endpoint"]; |
|||
if (!zipkinEndpoint.IsNullOrWhiteSpace()) |
|||
{ |
|||
tracing.AddZipkinExporter(zipKinOptions => |
|||
{ |
|||
zipKinOptions.Endpoint = new Uri(zipkinEndpoint); |
|||
}); |
|||
return; |
|||
} |
|||
}) |
|||
.WithMetrics(metrics => |
|||
{ |
|||
metrics.AddRuntimeInstrumentation(); |
|||
metrics.AddHttpClientInstrumentation(); |
|||
metrics.AddAspNetCoreInstrumentation(); |
|||
}); |
|||
} |
|||
} |
|||
|
|||
private void ConfigureExceptionHandling() |
|||
{ |
|||
// 自定义需要处理的异常
|
|||
Configure<AbpExceptionHandlingOptions>(options => |
|||
{ |
|||
// 加入需要处理的异常类型
|
|||
options.Handlers.Add<Volo.Abp.Data.AbpDbConcurrencyException>(); |
|||
options.Handlers.Add<AbpInitializationException>(); |
|||
options.Handlers.Add<OutOfMemoryException>(); |
|||
options.Handlers.Add<System.Data.Common.DbException>(); |
|||
options.Handlers.Add<Microsoft.EntityFrameworkCore.DbUpdateException>(); |
|||
options.Handlers.Add<System.Data.DBConcurrencyException>(); |
|||
}); |
|||
// 自定义需要发送邮件通知的异常类型
|
|||
Configure<AbpEmailExceptionHandlingOptions>(options => |
|||
{ |
|||
// 是否发送堆栈信息
|
|||
options.SendStackTrace = true; |
|||
// 未指定异常接收者的默认接收邮件
|
|||
// 指定自己的邮件地址
|
|||
}); |
|||
} |
|||
|
|||
private void ConfigureAuditing(IConfiguration configuration) |
|||
{ |
|||
Configure<AbpAuditingOptions>(options => |
|||
{ |
|||
options.ApplicationName = ApplicationName; |
|||
// 是否启用实体变更记录
|
|||
var allEntitiesSelectorIsEnabled = configuration["Auditing:AllEntitiesSelector"]; |
|||
if (allEntitiesSelectorIsEnabled.IsNullOrWhiteSpace() || |
|||
(bool.TryParse(allEntitiesSelectorIsEnabled, out var enabled) && enabled)) |
|||
{ |
|||
options.EntityHistorySelectors.AddAllEntities(); |
|||
} |
|||
}); |
|||
} |
|||
private void ConfigureTiming(IConfiguration configuration) |
|||
{ |
|||
Configure<AbpClockOptions>(options => |
|||
{ |
|||
configuration.GetSection("Clock").Bind(options); |
|||
}); |
|||
} |
|||
private void ConfigureCaching(IConfiguration configuration) |
|||
{ |
|||
Configure<AbpDistributedCacheOptions>(options => |
|||
{ |
|||
configuration.GetSection("DistributedCache").Bind(options); |
|||
}); |
|||
|
|||
Configure<RedisCacheOptions>(options => |
|||
{ |
|||
var redisConfig = ConfigurationOptions.Parse(options.Configuration); |
|||
options.ConfigurationOptions = redisConfig; |
|||
options.InstanceName = configuration["Redis:InstanceName"]; |
|||
}); |
|||
} |
|||
|
|||
private void ConfigureMvc(IServiceCollection services, IConfiguration configuration) |
|||
{ |
|||
Configure<AbpAspNetCoreMvcOptions>(options => |
|||
{ |
|||
options.ExposeIntegrationServices = true; |
|||
}); |
|||
|
|||
Configure<AbpEndpointRouterOptions>(options => |
|||
{ |
|||
options.EndpointConfigureActions.Add((builder) => |
|||
{ |
|||
builder.Endpoints.MapHealthChecks(configuration["App:HealthChecks"] ?? "/healthz"); |
|||
}); |
|||
}); |
|||
|
|||
services.AddHealthChecks(); |
|||
} |
|||
|
|||
private void ConfigureVirtualFileSystem() |
|||
{ |
|||
Configure<AbpVirtualFileSystemOptions>(options => |
|||
{ |
|||
options.FileSets.AddEmbedded<WechatManagementHttpApiHostModule>("LY.MicroService.WechatManagement"); |
|||
}); |
|||
} |
|||
|
|||
private void ConfigureMultiTenancy(IConfiguration configuration) |
|||
{ |
|||
// 多租户
|
|||
Configure<AbpMultiTenancyOptions>(options => |
|||
{ |
|||
options.IsEnabled = true; |
|||
}); |
|||
|
|||
var tenantResolveCfg = configuration.GetSection("App:Domains"); |
|||
if (tenantResolveCfg.Exists()) |
|||
{ |
|||
Configure<AbpTenantResolveOptions>(options => |
|||
{ |
|||
var domains = tenantResolveCfg.Get<string[]>(); |
|||
foreach (var domain in domains) |
|||
{ |
|||
options.AddDomainTenantResolver(domain); |
|||
} |
|||
}); |
|||
} |
|||
} |
|||
|
|||
private void ConfigureIdentity(IConfiguration configuration) |
|||
{ |
|||
Configure<AbpClaimsPrincipalFactoryOptions>(options => |
|||
{ |
|||
options.IsDynamicClaimsEnabled = true; |
|||
options.RemoteRefreshUrl = configuration["App:RefreshClaimsUrl"] + options.RemoteRefreshUrl; |
|||
}); |
|||
} |
|||
|
|||
private void ConfigureSwagger(IServiceCollection services) |
|||
{ |
|||
// Swagger
|
|||
services.AddSwaggerGen( |
|||
options => |
|||
{ |
|||
options.SwaggerDoc("v1", new OpenApiInfo |
|||
{ |
|||
Title = "WechatManagement API", Version = "v1", |
|||
Contact = new OpenApiContact |
|||
{ |
|||
Name = "colin", |
|||
Email = "colin.in@foxmail.com", |
|||
Url = new Uri("https://github.com/colinin") |
|||
}, |
|||
License = new OpenApiLicense |
|||
{ |
|||
Name = "MIT", |
|||
Url = new Uri("https://github.com/colinin/abp-next-admin/blob/master/LICENSE") |
|||
} |
|||
}); |
|||
options.DocInclusionPredicate((docName, description) => true); |
|||
options.CustomSchemaIds(type => type.FullName); |
|||
options.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme |
|||
{ |
|||
Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"", |
|||
Name = "Authorization", |
|||
In = ParameterLocation.Header, |
|||
Scheme = "bearer", |
|||
Type = SecuritySchemeType.Http, |
|||
BearerFormat = "JWT" |
|||
}); |
|||
options.AddSecurityRequirement(new OpenApiSecurityRequirement |
|||
{ |
|||
{ |
|||
new OpenApiSecurityScheme |
|||
{ |
|||
Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" } |
|||
}, |
|||
new string[] { } |
|||
} |
|||
}); |
|||
options.OperationFilter<TenantHeaderParamter>(); |
|||
}); |
|||
} |
|||
|
|||
private void ConfigureFeatureManagement() |
|||
{ |
|||
Configure<FeatureManagementOptions>(options => |
|||
{ |
|||
options.IsDynamicFeatureStoreEnabled = true; |
|||
}); |
|||
} |
|||
|
|||
private void ConfigurePermissionManagement() |
|||
{ |
|||
Configure<PermissionManagementOptions>(options => |
|||
{ |
|||
options.IsDynamicPermissionStoreEnabled = true; |
|||
}); |
|||
} |
|||
|
|||
private void ConfigureSettingManagement() |
|||
{ |
|||
Configure<SettingManagementOptions>(options => |
|||
{ |
|||
options.IsDynamicSettingStoreEnabled = true; |
|||
}); |
|||
} |
|||
|
|||
private void ConfigureLocalization() |
|||
{ |
|||
// 支持本地化语言类型
|
|||
Configure<AbpLocalizationOptions>(options => |
|||
{ |
|||
options.Languages.Add(new LanguageInfo("en", "en", "English")); |
|||
options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文")); |
|||
|
|||
options.UsePersistence<WeChatCommonResource>(); |
|||
options.UsePersistence<WeChatWorkResource>(); |
|||
}); |
|||
|
|||
|
|||
Configure<AbpLocalizationCultureMapOptions>(options => |
|||
{ |
|||
var zhHansCultureMapInfo = new CultureMapInfo |
|||
{ |
|||
TargetCulture = "zh-Hans", |
|||
SourceCultures = new string[] { "zh", "zh_CN", "zh-CN" } |
|||
}; |
|||
|
|||
options.CulturesMaps.Add(zhHansCultureMapInfo); |
|||
options.UiCulturesMaps.Add(zhHansCultureMapInfo); |
|||
}); |
|||
} |
|||
|
|||
private void ConfigureSecurity(IServiceCollection services, IConfiguration configuration, bool isDevelopment = false) |
|||
{ |
|||
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) |
|||
.AddJwtBearer(options => |
|||
{ |
|||
configuration.GetSection("AuthServer").Bind(options); |
|||
}); |
|||
|
|||
if (!isDevelopment) |
|||
{ |
|||
var redis = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]); |
|||
services |
|||
.AddDataProtection() |
|||
.SetApplicationName("LINGYUN.Abp.Application") |
|||
.PersistKeysToStackExchangeRedis(redis, "LINGYUN.Abp.Application:DataProtection:Protection-Keys"); |
|||
} |
|||
} |
|||
|
|||
private void ConfigureWrapper() |
|||
{ |
|||
Configure<AbpWrapperOptions>(options => |
|||
{ |
|||
options.IsEnabled = true; |
|||
}); |
|||
} |
|||
|
|||
private void PreConfigureWrapper() |
|||
{ |
|||
//PreConfigure<AbpDaprClientProxyOptions>(options =>
|
|||
//{
|
|||
// options.ProxyRequestActions.Add(
|
|||
// (appid, httprequestmessage) =>
|
|||
// {
|
|||
// httprequestmessage.Headers.TryAddWithoutValidation(AbpHttpWrapConsts.AbpDontWrapResult, "true");
|
|||
// });
|
|||
//});
|
|||
// 服务间调用不包装
|
|||
PreConfigure<AbpHttpClientBuilderOptions>(options => |
|||
{ |
|||
options.ProxyClientActions.Add( |
|||
(_, _, client) => |
|||
{ |
|||
client.DefaultRequestHeaders.TryAddWithoutValidation(AbpHttpWrapConsts.AbpDontWrapResult, "true"); |
|||
}); |
|||
}); |
|||
} |
|||
} |
|||
@ -0,0 +1,143 @@ |
|||
using LINGYUN.Abp.AspNetCore.HttpOverrides; |
|||
using LINGYUN.Abp.AspNetCore.Mvc.Localization; |
|||
using LINGYUN.Abp.AspNetCore.Mvc.Wrapper; |
|||
using LINGYUN.Abp.AuditLogging.Elasticsearch; |
|||
using LINGYUN.Abp.Authorization.OrganizationUnits; |
|||
using LINGYUN.Abp.Claims.Mapping; |
|||
using LINGYUN.Abp.EventBus.CAP; |
|||
using LINGYUN.Abp.ExceptionHandling.Emailing; |
|||
using LINGYUN.Abp.Http.Client.Wrapper; |
|||
using LINGYUN.Abp.Identity.Session.AspNetCore; |
|||
using LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore; |
|||
using LINGYUN.Abp.Saas.EntityFrameworkCore; |
|||
using LINGYUN.Abp.Serilog.Enrichers.Application; |
|||
using LINGYUN.Abp.Serilog.Enrichers.UniqueId; |
|||
using LINGYUN.Abp.WeChat.MiniProgram; |
|||
using LINGYUN.Abp.WeChat.Official; |
|||
using LINGYUN.Abp.WeChat.SettingManagement; |
|||
using LINGYUN.Abp.WeChat.Work; |
|||
using Microsoft.AspNetCore.Builder; |
|||
using Microsoft.Extensions.DependencyInjection; |
|||
using Microsoft.Extensions.Hosting; |
|||
using Volo.Abp; |
|||
using Volo.Abp.AspNetCore.Authentication.JwtBearer; |
|||
using Volo.Abp.AspNetCore.MultiTenancy; |
|||
using Volo.Abp.AspNetCore.Serilog; |
|||
using Volo.Abp.Autofac; |
|||
using Volo.Abp.Caching.StackExchangeRedis; |
|||
using Volo.Abp.DistributedLocking; |
|||
using Volo.Abp.EntityFrameworkCore.MySQL; |
|||
using Volo.Abp.FeatureManagement.EntityFrameworkCore; |
|||
using Volo.Abp.Http.Client.IdentityModel.Web; |
|||
using Volo.Abp.Modularity; |
|||
using Volo.Abp.PermissionManagement.EntityFrameworkCore; |
|||
using Volo.Abp.SettingManagement.EntityFrameworkCore; |
|||
using Volo.Abp.Swashbuckle; |
|||
|
|||
namespace LY.MicroService.WechatManagement; |
|||
|
|||
[DependsOn( |
|||
typeof(AbpSerilogEnrichersApplicationModule), |
|||
typeof(AbpSerilogEnrichersUniqueIdModule), |
|||
typeof(AbpAuditLoggingElasticsearchModule), |
|||
typeof(AbpAspNetCoreSerilogModule), |
|||
typeof(AbpWeChatWorkApplicationModule), |
|||
typeof(AbpWeChatWorkHttpApiModule), |
|||
typeof(AbpWeChatOfficialApplicationModule), |
|||
typeof(AbpWeChatOfficialHttpApiModule), |
|||
typeof(AbpWeChatMiniProgramModule), |
|||
typeof(AbpWeChatSettingManagementModule), |
|||
typeof(AbpSaasEntityFrameworkCoreModule), |
|||
typeof(AbpFeatureManagementEntityFrameworkCoreModule), |
|||
typeof(AbpPermissionManagementEntityFrameworkCoreModule), |
|||
typeof(AbpSettingManagementEntityFrameworkCoreModule), |
|||
typeof(AbpLocalizationManagementEntityFrameworkCoreModule), |
|||
typeof(AbpEntityFrameworkCoreMySQLModule), |
|||
typeof(AbpAspNetCoreAuthenticationJwtBearerModule), |
|||
typeof(AbpAuthorizationOrganizationUnitsModule), |
|||
typeof(AbpEmailingExceptionHandlingModule), |
|||
typeof(AbpCAPEventBusModule), |
|||
typeof(AbpHttpClientIdentityModelWebModule), |
|||
typeof(AbpAspNetCoreMultiTenancyModule), |
|||
typeof(AbpAspNetCoreMvcLocalizationModule), |
|||
typeof(AbpCachingStackExchangeRedisModule), |
|||
typeof(AbpDistributedLockingModule), |
|||
typeof(AbpSwashbuckleModule), |
|||
typeof(AbpHttpClientWrapperModule), |
|||
typeof(AbpClaimsMappingModule), |
|||
typeof(AbpAspNetCoreMvcWrapperModule), |
|||
typeof(AbpAspNetCoreHttpOverridesModule), |
|||
typeof(AbpIdentitySessionAspNetCoreModule), |
|||
typeof(AbpAutofacModule) |
|||
)] |
|||
public partial class WechatManagementHttpApiHostModule : AbpModule |
|||
{ |
|||
public override void PreConfigureServices(ServiceConfigurationContext context) |
|||
{ |
|||
var configuration = context.Services.GetConfiguration(); |
|||
|
|||
PreConfigureWrapper(); |
|||
PreConfigureFeature(); |
|||
PreForwardedHeaders(); |
|||
PreConfigureApp(configuration); |
|||
PreConfigureCAP(configuration); |
|||
} |
|||
|
|||
public override void ConfigureServices(ServiceConfigurationContext context) |
|||
{ |
|||
var hostingEnvironment = context.Services.GetHostingEnvironment(); |
|||
var configuration = context.Services.GetConfiguration(); |
|||
|
|||
ConfigureWrapper(); |
|||
ConfigureDbContext(); |
|||
ConfigureLocalization(); |
|||
ConfigureExceptionHandling(); |
|||
ConfigureVirtualFileSystem(); |
|||
ConfigureFeatureManagement(); |
|||
ConfigureSettingManagement(); |
|||
ConfigurePermissionManagement(); |
|||
ConfigureTiming(configuration); |
|||
ConfigureCaching(configuration); |
|||
ConfigureAuditing(configuration); |
|||
ConfigureIdentity(configuration); |
|||
ConfigureMultiTenancy(configuration); |
|||
ConfigureSwagger(context.Services); |
|||
ConfigureJsonSerializer(configuration); |
|||
ConfigureMvc(context.Services, configuration); |
|||
ConfigureOpenTelemetry(context.Services, configuration); |
|||
ConfigureDistributedLock(context.Services, configuration); |
|||
ConfigureSecurity(context.Services, configuration, hostingEnvironment.IsDevelopment()); |
|||
} |
|||
|
|||
public override void OnApplicationInitialization(ApplicationInitializationContext context) |
|||
{ |
|||
var app = context.GetApplicationBuilder(); |
|||
var env = context.GetEnvironment(); |
|||
|
|||
app.UseForwardedHeaders(); |
|||
app.UseMapRequestLocalization(); |
|||
app.UseCorrelationId(); |
|||
app.UseStaticFiles(); |
|||
app.UseRouting(); |
|||
app.UseCors(); |
|||
app.UseAuthentication(); |
|||
app.UseJwtTokenMiddleware(); |
|||
app.UseAbpSession(); |
|||
app.UseDynamicClaims(); |
|||
app.UseMultiTenancy(); |
|||
app.UseAuthorization(); |
|||
app.UseSwagger(); |
|||
app.UseAbpSwaggerUI(options => |
|||
{ |
|||
options.SwaggerEndpoint("/swagger/v1/swagger.json", "Support APP API"); |
|||
|
|||
var configuration = context.GetConfiguration(); |
|||
options.OAuthClientId(configuration["AuthServer:SwaggerClientId"]); |
|||
options.OAuthClientSecret(configuration["AuthServer:SwaggerClientSecret"]); |
|||
options.OAuthScopes("WechatManagement"); |
|||
}); |
|||
app.UseAuditing(); |
|||
app.UseAbpSerilogEnrichers(); |
|||
app.UseConfiguredEndpoints(); |
|||
} |
|||
} |
|||
@ -0,0 +1,133 @@ |
|||
{ |
|||
"AgileConfig": { |
|||
"IsEnabled": false, |
|||
"env": "DEV", |
|||
"appId": "LINGYUN.Abp.WechatManagement", |
|||
"secret": "1q2w3E*", |
|||
"nodes": "http://127.0.0.1:5000", |
|||
"name": "LINGYUN.Abp.WechatManagement", |
|||
"tag": "LINGYUN.Abp.WechatManagement" |
|||
}, |
|||
"App": { |
|||
"ShowPii": true, |
|||
"RefreshClaimsUrl": "http://127.0.0.1:30015" |
|||
}, |
|||
"Auditing": { |
|||
"AllEntitiesSelector": true |
|||
}, |
|||
"DistributedCache": { |
|||
"HideErrors": true, |
|||
"KeyPrefix": "LINGYUN.Abp.Application", |
|||
"GlobalCacheEntryOptions": { |
|||
"SlidingExpiration": "30:00:00", |
|||
"AbsoluteExpirationRelativeToNow": "60:00:00" |
|||
} |
|||
}, |
|||
"ConnectionStrings": { |
|||
"Default": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", |
|||
"AbpSaas": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", |
|||
"AbpFeatureManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", |
|||
"AbpPermissionManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", |
|||
"AbpSettingManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", |
|||
"AbpLocalizationManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None" |
|||
}, |
|||
"DistributedLock": { |
|||
"IsEnabled": true, |
|||
"Redis": { |
|||
"Configuration": "127.0.0.1,defaultDatabase=15" |
|||
} |
|||
}, |
|||
"OpenTelemetry": { |
|||
"IsEnabled": true, |
|||
"ZipKin": { |
|||
"Endpoint": "http://127.0.0.1:9411/api/v2/spans" |
|||
} |
|||
}, |
|||
"RemoteServices": {}, |
|||
"IdentityClients": { |
|||
"InternalServiceClient": { |
|||
"Authority": "http://127.0.0.1:44385", |
|||
"RequireHttps": false, |
|||
"GrantType": "client_credentials", |
|||
"Scope": "lingyun-abp-application", |
|||
"ClientId": "InternalServiceClient", |
|||
"ClientSecret": "1q2w3E*" |
|||
} |
|||
}, |
|||
"CAP": { |
|||
"EventBus": { |
|||
"DefaultGroupName": "WechatManagement", |
|||
"GroupNamePrefix": "Dev", |
|||
"Version": "v1", |
|||
"FailedRetryInterval": 300, |
|||
"FailedRetryCount": 10 |
|||
}, |
|||
"MySql": { |
|||
"TableNamePrefix": "wechat", |
|||
"ConnectionString": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None" |
|||
}, |
|||
"RabbitMQ": { |
|||
"HostName": "127.0.0.1", |
|||
"Port": 5672, |
|||
"UserName": "admin", |
|||
"Password": "admin", |
|||
"ExchangeName": "LINGYUN.Abp.Application", |
|||
"VirtualHost": "/" |
|||
} |
|||
}, |
|||
"Redis": { |
|||
"Configuration": "127.0.0.1,defaultDatabase=10", |
|||
"InstanceName": "LINGYUN.Abp.Application" |
|||
}, |
|||
"AuthServer": { |
|||
"Authority": "http://127.0.0.1:44385/", |
|||
"Audience": "lingyun-abp-application", |
|||
"MapInboundClaims": false, |
|||
"RequireHttpsMetadata": false, |
|||
"SwaggerClientId": "InternalServiceClient", |
|||
"SwaggerClientSecret": "1q2w3E*" |
|||
}, |
|||
"Logging": { |
|||
"Serilog": { |
|||
"Elasticsearch": { |
|||
"IndexFormat": "abp.dev.logging-{0:yyyy.MM.dd}" |
|||
} |
|||
} |
|||
}, |
|||
"AuditLogging": { |
|||
"Elasticsearch": { |
|||
"IndexPrefix": "abp.dev.auditing" |
|||
} |
|||
}, |
|||
"Elasticsearch": { |
|||
"NodeUris": "http://127.0.0.1:9200" |
|||
}, |
|||
"Serilog": { |
|||
"MinimumLevel": { |
|||
"Default": "Debug", |
|||
"Override": { |
|||
"System": "Warning", |
|||
"Microsoft": "Warning", |
|||
"DotNetCore": "Debug" |
|||
} |
|||
}, |
|||
"WriteTo": [ |
|||
{ |
|||
"Name": "Console", |
|||
"Args": { |
|||
"restrictedToMinimumLevel": "Debug", |
|||
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] [{SourceContext}] [{ProcessId}] [{ThreadId}] - {Message:lj}{NewLine}{Exception}" |
|||
} |
|||
}, |
|||
{ |
|||
"Name": "Elasticsearch", |
|||
"Args": { |
|||
"nodeUris": "http://127.0.0.1:9200", |
|||
"indexFormat": "abp.dev.logging-{0:yyyy.MM.dd}", |
|||
"autoRegisterTemplate": true, |
|||
"autoRegisterTemplateVersion": "ESv7" |
|||
} |
|||
} |
|||
] |
|||
} |
|||
} |
|||
@ -0,0 +1,88 @@ |
|||
{ |
|||
"Clock": { |
|||
"Kind": "Local" |
|||
}, |
|||
"Forwarded": { |
|||
"ForwardedHeaders": "XForwardedFor,XForwardedProto" |
|||
}, |
|||
"StringEncryption": { |
|||
"DefaultPassPhrase": "s46c5q55nxpeS8Ra", |
|||
"InitVectorBytes": "s83ng0abvd02js84", |
|||
"DefaultSalt": "sf&5)s3#" |
|||
}, |
|||
"Json": { |
|||
"OutputDateTimeFormat": "yyyy-MM-dd HH:mm:ss", |
|||
"InputDateTimeFormats": [ |
|||
"yyyy-MM-dd HH:mm:ss", |
|||
"yyyy-MM-ddTHH:mm:ss" |
|||
] |
|||
}, |
|||
"AllowedHosts": "*", |
|||
"Serilog": { |
|||
"MinimumLevel": { |
|||
"Default": "Debug", |
|||
"Override": { |
|||
"Microsoft.EntityFrameworkCore": "Debug", |
|||
"System": "Information", |
|||
"Microsoft": "Information" |
|||
} |
|||
}, |
|||
"Enrich": [ "FromLogContext", "WithProcessId", "WithThreadId", "WithEnvironmentName", "WithMachineName", "WithApplicationName", "WithUniqueId" ], |
|||
"WriteTo": [ |
|||
{ |
|||
"Name": "Console", |
|||
"Args": { |
|||
"initialMinimumLevel": "Verbose", |
|||
"standardErrorFromLevel": "Verbose", |
|||
"restrictedToMinimumLevel": "Verbose", |
|||
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] [{SourceContext}] [{ProcessId}] [{ThreadId}] - {Message:lj}{NewLine}{Exception}" |
|||
} |
|||
}, |
|||
{ |
|||
"Name": "File", |
|||
"Args": { |
|||
"path": "Logs/Debug-.log", |
|||
"restrictedToMinimumLevel": "Debug", |
|||
"rollingInterval": "Day", |
|||
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] [{SourceContext}] [{ProcessId}] [{ThreadId}] - {Message:lj}{NewLine}{Exception}" |
|||
} |
|||
}, |
|||
{ |
|||
"Name": "File", |
|||
"Args": { |
|||
"path": "Logs/Info-.log", |
|||
"restrictedToMinimumLevel": "Information", |
|||
"rollingInterval": "Day", |
|||
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] [{SourceContext}] [{ProcessId}] [{ThreadId}] - {Message:lj}{NewLine}{Exception}" |
|||
} |
|||
}, |
|||
{ |
|||
"Name": "File", |
|||
"Args": { |
|||
"path": "Logs/Warn-.log", |
|||
"restrictedToMinimumLevel": "Warning", |
|||
"rollingInterval": "Day", |
|||
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] [{SourceContext}] [{ProcessId}] [{ThreadId}] - {Message:lj}{NewLine}{Exception}" |
|||
} |
|||
}, |
|||
{ |
|||
"Name": "File", |
|||
"Args": { |
|||
"path": "Logs/Error-.log", |
|||
"restrictedToMinimumLevel": "Error", |
|||
"rollingInterval": "Day", |
|||
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] [{SourceContext}] [{ProcessId}] [{ThreadId}] - {Message:lj}{NewLine}{Exception}" |
|||
} |
|||
}, |
|||
{ |
|||
"Name": "File", |
|||
"Args": { |
|||
"path": "Logs/Fatal-.log", |
|||
"restrictedToMinimumLevel": "Fatal", |
|||
"rollingInterval": "Day", |
|||
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] [{SourceContext}] [{ProcessId}] [{ThreadId}] - {Message:lj}{NewLine}{Exception}" |
|||
} |
|||
} |
|||
] |
|||
} |
|||
} |
|||
@ -0,0 +1 @@ |
|||
dapr run --app-id WebhooksManagement --app-port 57264 -H 30060 -- dotnet run --no-build |
|||
Loading…
Reference in new issue