├── LICENSE ├── Pure.NetCoreExtensions.Test ├── 1.jpg ├── Controllers │ └── HelloWorldController.cs ├── Dockerfile ├── Program.cs ├── Properties │ ├── PublishProfiles │ │ ├── FolderProfile.pubxml │ │ └── FolderProfile.pubxml.user │ └── launchSettings.json ├── Pure.NetCoreExtensions.Test.csproj ├── Pure.NetCoreExtensions.Test.csproj.user ├── Startup.cs ├── Views │ ├── HelloWorld │ │ └── Index.cshtml │ └── Shared │ │ ├── _Layout.cshtml │ │ ├── _ViewImports.cshtml │ │ └── _ViewStart.cshtml ├── appsettings.json ├── bin │ ├── Any CPU │ │ └── Release │ │ │ └── netcoreapp2.0 │ │ │ ├── Pure.NetCoreExtensions.Test.deps.json │ │ │ ├── Pure.NetCoreExtensions.Test.dll │ │ │ ├── Pure.NetCoreExtensions.Test.pdb │ │ │ ├── Pure.NetCoreExtensions.Test.runtimeconfig.dev.json │ │ │ ├── Pure.NetCoreExtensions.Test.runtimeconfig.json │ │ │ ├── Pure.NetCoreExtensions.dll │ │ │ └── Pure.NetCoreExtensions.pdb │ ├── Debug │ │ └── netcoreapp2.0 │ │ │ ├── Pure.NetCoreExtensions.Test.deps.json │ │ │ ├── Pure.NetCoreExtensions.Test.dll │ │ │ ├── Pure.NetCoreExtensions.Test.pdb │ │ │ ├── Pure.NetCoreExtensions.Test.runtimeconfig.dev.json │ │ │ ├── Pure.NetCoreExtensions.Test.runtimeconfig.json │ │ │ ├── Pure.NetCoreExtensions.dll │ │ │ └── Pure.NetCoreExtensions.pdb │ └── Release │ │ ├── PublishOutput │ │ ├── Microsoft.CodeAnalysis.CSharp.Workspaces.dll │ │ ├── Microsoft.CodeAnalysis.Workspaces.dll │ │ ├── Microsoft.VisualStudio.Web.CodeGeneration.Contracts.dll │ │ ├── Microsoft.VisualStudio.Web.CodeGeneration.Core.dll │ │ ├── Microsoft.VisualStudio.Web.CodeGeneration.EntityFrameworkCore.dll │ │ ├── Microsoft.VisualStudio.Web.CodeGeneration.Templating.dll │ │ ├── Microsoft.VisualStudio.Web.CodeGeneration.Utils.dll │ │ ├── Microsoft.VisualStudio.Web.CodeGeneration.dll │ │ ├── Microsoft.VisualStudio.Web.CodeGenerators.Mvc.dll │ │ ├── NuGet.Frameworks.dll │ │ ├── Pure.NetCoreExtensions.Test.PrecompiledViews.dll │ │ ├── Pure.NetCoreExtensions.Test.PrecompiledViews.pdb │ │ ├── Pure.NetCoreExtensions.Test.deps.json │ │ ├── Pure.NetCoreExtensions.Test.dll │ │ ├── Pure.NetCoreExtensions.Test.pdb │ │ ├── Pure.NetCoreExtensions.Test.runtimeconfig.json │ │ ├── Pure.NetCoreExtensions.dll │ │ ├── Pure.NetCoreExtensions.pdb │ │ ├── System.Composition.AttributedModel.dll │ │ ├── System.Composition.Convention.dll │ │ ├── System.Composition.Hosting.dll │ │ ├── System.Composition.Runtime.dll │ │ ├── System.Composition.TypedParts.dll │ │ ├── appsettings.json │ │ ├── dotnet-aspnet-codegenerator-design.dll │ │ └── web.config │ │ └── netcoreapp2.0 │ │ ├── Pure.NetCoreExtensions.Test.deps.json │ │ ├── Pure.NetCoreExtensions.Test.dll │ │ ├── Pure.NetCoreExtensions.Test.pdb │ │ ├── Pure.NetCoreExtensions.Test.runtimeconfig.dev.json │ │ ├── Pure.NetCoreExtensions.Test.runtimeconfig.json │ │ ├── Pure.NetCoreExtensions.dll │ │ ├── Pure.NetCoreExtensions.pdb │ │ ├── centos.7-x64 │ │ ├── Pure.NetCoreExtensions.Test.Test │ │ ├── Pure.NetCoreExtensions.Test.deps.json │ │ ├── Pure.NetCoreExtensions.Test.dll │ │ ├── Pure.NetCoreExtensions.Test.pdb │ │ ├── Pure.NetCoreExtensions.Test.runtimeconfig.dev.json │ │ ├── Pure.NetCoreExtensions.Test.runtimeconfig.json │ │ ├── Pure.NetCoreExtensions.dll │ │ ├── Pure.NetCoreExtensions.pdb │ │ ├── libhostfxr.so │ │ └── libhostpolicy.so │ │ ├── win10-x64 │ │ ├── Pure.NetCoreExtensions.Test.deps.json │ │ ├── Pure.NetCoreExtensions.Test.dll │ │ ├── Pure.NetCoreExtensions.Test.exe │ │ ├── Pure.NetCoreExtensions.Test.pdb │ │ ├── Pure.NetCoreExtensions.Test.runtimeconfig.dev.json │ │ ├── Pure.NetCoreExtensions.Test.runtimeconfig.json │ │ ├── Pure.NetCoreExtensions.dll │ │ ├── Pure.NetCoreExtensions.pdb │ │ ├── hostfxr.dll │ │ └── hostpolicy.dll │ │ └── win81-x64 │ │ ├── Pure.NetCoreExtensions.Test.deps.json │ │ ├── Pure.NetCoreExtensions.Test.dll │ │ ├── Pure.NetCoreExtensions.Test.exe │ │ ├── Pure.NetCoreExtensions.Test.pdb │ │ ├── Pure.NetCoreExtensions.Test.runtimeconfig.dev.json │ │ ├── Pure.NetCoreExtensions.Test.runtimeconfig.json │ │ ├── Pure.NetCoreExtensions.dll │ │ ├── Pure.NetCoreExtensions.pdb │ │ ├── hostfxr.dll │ │ └── hostpolicy.dll ├── hosting.json └── obj │ ├── Any CPU │ └── Release │ │ └── netcoreapp2.0 │ │ ├── Pure.NetCoreExtensions.Test.AssemblyInfo.cs │ │ ├── Pure.NetCoreExtensions.Test.AssemblyInfoInputs.cache │ │ ├── Pure.NetCoreExtensions.Test.PrecompiledViews.dll │ │ ├── Pure.NetCoreExtensions.Test.PrecompiledViews.pdb │ │ ├── Pure.NetCoreExtensions.Test.csproj.CopyComplete │ │ ├── Pure.NetCoreExtensions.Test.csproj.CoreCompileInputs.cache │ │ ├── Pure.NetCoreExtensions.Test.csproj.FileListAbsolute.txt │ │ ├── Pure.NetCoreExtensions.Test.dll │ │ ├── Pure.NetCoreExtensions.Test.pdb │ │ └── microsoft.aspnetcore.mvc.razor.viewcompilation.rsp │ ├── Debug │ └── netcoreapp2.0 │ │ ├── Pure.NetCoreExtensions.Test.AssemblyInfo.cs │ │ ├── Pure.NetCoreExtensions.Test.AssemblyInfoInputs.cache │ │ ├── Pure.NetCoreExtensions.Test.csproj.CopyComplete │ │ ├── Pure.NetCoreExtensions.Test.csproj.CoreCompileInputs.cache │ │ ├── Pure.NetCoreExtensions.Test.csproj.FileListAbsolute.txt │ │ ├── Pure.NetCoreExtensions.Test.csprojResolveAssemblyReference.cache │ │ ├── Pure.NetCoreExtensions.Test.dll │ │ └── Pure.NetCoreExtensions.Test.pdb │ ├── Docker │ ├── AppType.cache │ ├── CanonicalServiceName.cache │ ├── ProjectReferences.cache │ ├── RelativeOutputAssemblyPath.Fast.cache │ ├── RelativeOutputAssemblyPath.Regular.cache │ └── TargetFramework.cache │ ├── Pure.NetCoreExtensions.Test.csproj.nuget.cache │ ├── Pure.NetCoreExtensions.Test.csproj.nuget.g.props │ ├── Pure.NetCoreExtensions.Test.csproj.nuget.g.targets │ ├── Release │ └── netcoreapp2.0 │ │ ├── PubTmp │ │ └── Out │ │ │ ├── Microsoft.CodeAnalysis.CSharp.Workspaces.dll │ │ │ ├── Microsoft.CodeAnalysis.Workspaces.dll │ │ │ ├── Microsoft.VisualStudio.Web.CodeGeneration.Contracts.dll │ │ │ ├── Microsoft.VisualStudio.Web.CodeGeneration.Core.dll │ │ │ ├── Microsoft.VisualStudio.Web.CodeGeneration.EntityFrameworkCore.dll │ │ │ ├── Microsoft.VisualStudio.Web.CodeGeneration.Templating.dll │ │ │ ├── Microsoft.VisualStudio.Web.CodeGeneration.Utils.dll │ │ │ ├── Microsoft.VisualStudio.Web.CodeGeneration.dll │ │ │ ├── Microsoft.VisualStudio.Web.CodeGenerators.Mvc.dll │ │ │ ├── NuGet.Frameworks.dll │ │ │ ├── Pure.NetCoreExtensions.Test.PrecompiledViews.dll │ │ │ ├── Pure.NetCoreExtensions.Test.PrecompiledViews.pdb │ │ │ ├── Pure.NetCoreExtensions.Test.deps.json │ │ │ ├── Pure.NetCoreExtensions.Test.dll │ │ │ ├── Pure.NetCoreExtensions.Test.pdb │ │ │ ├── Pure.NetCoreExtensions.Test.runtimeconfig.json │ │ │ ├── Pure.NetCoreExtensions.dll │ │ │ ├── Pure.NetCoreExtensions.pdb │ │ │ ├── System.Composition.AttributedModel.dll │ │ │ ├── System.Composition.Convention.dll │ │ │ ├── System.Composition.Hosting.dll │ │ │ ├── System.Composition.Runtime.dll │ │ │ ├── System.Composition.TypedParts.dll │ │ │ ├── appsettings.json │ │ │ ├── dotnet-aspnet-codegenerator-design.dll │ │ │ └── web.config │ │ ├── Pure.NetCoreExtensions.Test.AssemblyInfo.cs │ │ ├── Pure.NetCoreExtensions.Test.AssemblyInfoInputs.cache │ │ ├── Pure.NetCoreExtensions.Test.PrecompiledViews.dll │ │ ├── Pure.NetCoreExtensions.Test.PrecompiledViews.pdb │ │ ├── Pure.NetCoreExtensions.Test.csproj.CopyComplete │ │ ├── Pure.NetCoreExtensions.Test.csproj.CoreCompileInputs.cache │ │ ├── Pure.NetCoreExtensions.Test.csproj.FileListAbsolute.txt │ │ ├── Pure.NetCoreExtensions.Test.csprojResolveAssemblyReference.cache │ │ ├── Pure.NetCoreExtensions.Test.dll │ │ ├── Pure.NetCoreExtensions.Test.pdb │ │ ├── centos.7-x64 │ │ ├── Pure.NetCoreExtensions.Test.AssemblyInfo.cs │ │ ├── Pure.NetCoreExtensions.Test.AssemblyInfoInputs.cache │ │ ├── Pure.NetCoreExtensions.Test.csproj.CopyComplete │ │ ├── Pure.NetCoreExtensions.Test.csproj.CoreCompileInputs.cache │ │ ├── Pure.NetCoreExtensions.Test.csproj.FileListAbsolute.txt │ │ ├── Pure.NetCoreExtensions.Test.dll │ │ └── Pure.NetCoreExtensions.Test.pdb │ │ ├── microsoft.aspnetcore.mvc.razor.viewcompilation.rsp │ │ ├── win10-x64 │ │ ├── Pure.NetCoreExtensions.Test.AssemblyInfo.cs │ │ ├── Pure.NetCoreExtensions.Test.AssemblyInfoInputs.cache │ │ ├── Pure.NetCoreExtensions.Test.csproj.CopyComplete │ │ ├── Pure.NetCoreExtensions.Test.csproj.CoreCompileInputs.cache │ │ ├── Pure.NetCoreExtensions.Test.csproj.FileListAbsolute.txt │ │ ├── Pure.NetCoreExtensions.Test.dll │ │ └── Pure.NetCoreExtensions.Test.pdb │ │ └── win81-x64 │ │ ├── Pure.NetCoreExtensions.Test.AssemblyInfo.cs │ │ ├── Pure.NetCoreExtensions.Test.AssemblyInfoInputs.cache │ │ ├── Pure.NetCoreExtensions.Test.csproj.CopyComplete │ │ ├── Pure.NetCoreExtensions.Test.csproj.CoreCompileInputs.cache │ │ ├── Pure.NetCoreExtensions.Test.csproj.FileListAbsolute.txt │ │ ├── Pure.NetCoreExtensions.Test.dll │ │ └── Pure.NetCoreExtensions.Test.pdb │ ├── netcoreapp2.0 │ ├── centos.7-x64 │ │ └── host │ │ │ └── Pure.NetCoreExtensions.Test │ ├── win10-x64 │ │ └── host │ │ │ └── Pure.NetCoreExtensions.Test.exe │ └── win81-x64 │ │ └── host │ │ └── Pure.NetCoreExtensions.Test.exe │ └── project.assets.json ├── Pure.NetCoreExtensions.sln ├── Pure.NetCoreExtensions ├── ApplicationBuilderExtensions.cs ├── Caching │ └── DistributedCacheExtensions.cs ├── Common │ ├── DateTimeExt.cs │ └── StringExtensions.cs ├── Configuration │ ├── ConfigurationExtensions.cs │ ├── ConfigurationManager.cs │ ├── ConnectionStringSettings.cs │ └── ConnectionStringSettingsCollection.cs ├── Cookies │ ├── CookiesExtensions.cs │ └── DefaultCookies.cs ├── DependencyInjection │ ├── GlobalServiceProvider.cs │ ├── HttpContextAccessorExtensions.cs │ ├── IScoped.cs │ ├── ISingleton.cs │ ├── ITransient.cs │ ├── ServiceCollectionExtensions.cs │ └── ServiceRegister.cs ├── Env │ ├── EnvironmentExtensions.cs │ └── GlobalHostEnvironment.cs ├── FriendlyExceptions │ ├── Extensions │ │ ├── ApplicationBuilderExtensions.cs │ │ ├── HttpContextExtensions.cs │ │ └── ServiceCollectionExtensions.cs │ ├── FriendlyExceptionAttribute.cs │ ├── FriendlyExceptionsMiddleware.cs │ ├── Options │ │ └── TranformOptions.cs │ └── Transforms │ │ ├── Interfaces │ │ ├── ITransform.cs │ │ ├── ITransformTo.cs │ │ ├── ITransformsCollection.cs │ │ └── ITransformsMap.cs │ │ └── TransformsCollectionBuilder.cs ├── Helper │ ├── PathHelper.cs │ └── RequestHelper.cs ├── HowToUse.txt ├── Http │ ├── FormFileExtentions.cs │ ├── GlobalHttpContext.cs │ ├── HeaderDictionaryExtensions.cs │ ├── HttpContextExtensions.cs │ ├── HttpCookieCollection.cs │ ├── HttpCookieWrapper.cs │ ├── HttpFileCollection.cs │ ├── HttpPostedFile.cs │ ├── HttpRequestExtentions.cs │ ├── HttpRequestWrapper.cs │ ├── HttpResponseWrapper.cs │ ├── HttpServerUtility.cs │ ├── HttpSessionState.cs │ └── ReverseProxy.cs ├── HttpException.cs ├── Identity │ ├── DefaultIdentityExtensions.cs │ ├── DefaultIdentityUser.cs │ ├── DefaultIdentityUserClaimsExtensions.cs │ └── UserManagerExtensions.cs ├── Log │ ├── FileLogger.cs │ ├── FileLoggerProvider.cs │ ├── GlobalLoggerFactory.cs │ └── LoggerFactoryExtensions.cs ├── Middleware │ ├── HtmlMinificationMiddleware │ │ ├── HtmlMinificationMiddleware.cs │ │ ├── HtmlMinificationMiddlewareExtensions.cs │ │ ├── HtmlMinificationOptions.cs │ │ ├── HtmlMinificationPipeline.cs │ │ └── 使用说明.txt │ ├── HttpExceptionMiddleware.cs │ ├── InternalServerErrorOnExceptionMiddleware.cs │ └── NoServerHttpHeaderMiddleware.cs ├── Mvc │ ├── BaseController.cs │ ├── BaseControllerWithIdentity.cs │ ├── ContentType.cs │ ├── Filters │ │ ├── AnyClaimsAttribute.cs │ │ ├── HttpGlobalExceptionFilter.cs │ │ ├── InjectAttribute.cs │ │ ├── NoCacheAttribute.cs │ │ ├── NoLowercaseQueryStringAttribute.cs │ │ ├── NoTrailingSlashAttribute.cs │ │ ├── OperationCancelledExceptionFilter.cs │ │ ├── Prompt.cs │ │ ├── RedirectToCanonicalUrlAttribute.cs │ │ └── ValidateModelStateAttribute.cs │ ├── RestController.cs │ └── UrlHelperExtensions.cs ├── Pure.NetCoreExtensions.csproj ├── RateLimit │ ├── Core │ │ ├── ClientRateLimitProcessor.cs │ │ ├── Extensions.cs │ │ ├── IpRateLimitProcessor.cs │ │ ├── RateLimitCore.cs │ │ └── WildcardMatcher.cs │ ├── Middleware │ │ ├── ClientRateLimitMiddleware.cs │ │ ├── IpRateLimitMiddleware.cs │ │ └── MiddlewareExtensions.cs │ ├── Models │ │ ├── ClientRateLimitOptions.cs │ │ ├── ClientRateLimitPolicies.cs │ │ ├── ClientRateLimitPolicy.cs │ │ ├── ClientRequestIdentity.cs │ │ ├── IpRateLimitOptions.cs │ │ ├── IpRateLimitPolicies.cs │ │ ├── IpRateLimitPolicy.cs │ │ ├── RateLimitCoreOptions.cs │ │ ├── RateLimitCounter.cs │ │ ├── RateLimitHeaders.cs │ │ └── RateLimitRule.cs │ ├── Net │ │ ├── IIPAddressParser.cs │ │ ├── IPAddressRange.cs │ │ ├── IpAddressUtil.cs │ │ ├── RemoteIpParser.cs │ │ └── ReversProxyIpParser.cs │ ├── Store │ │ ├── DistributedCacheClientPolicyStore.cs │ │ ├── DistributedCacheIpPolicyStore.cs │ │ ├── DistributedCacheRateLimitCounterStore.cs │ │ ├── IClientPolicyStore.cs │ │ ├── IIpPolicyStore.cs │ │ ├── IRateLimitCounterStore.cs │ │ ├── MemoryCacheClientPolicyStore.cs │ │ ├── MemoryCacheIpPolicyStore.cs │ │ └── MemoryCacheRateLimitCounterStore.cs │ └── TokenBucketLimiting │ │ ├── ILimitingService.cs │ │ ├── LeakageBucketLimitingService.cs │ │ ├── LimitingFactory.cs │ │ └── TokenBucketLimitingService.cs ├── SmtpEmail │ ├── Attachment.cs │ ├── EmailSender.cs │ ├── HtmlHelper.cs │ ├── IEmailSender.cs │ ├── SmtpEmailSender.cs │ └── SmtpEmailSenderExtensions.cs ├── Statistics │ ├── Browser.cs │ ├── DefaultGeolocationProvider.cs │ ├── IGeolocationProvider.cs │ ├── IpInformation.cs │ ├── Middlewares │ │ └── StatisticsMiddleware.cs │ ├── OperateSystem.cs │ ├── RequestLog.cs │ └── UserAgentHelper.cs ├── System │ └── Platform.cs ├── WebHostBuilderExtensions.cs ├── bin │ ├── Debug │ │ └── netstandard2.0 │ │ │ ├── Pure.NetCoreExtensions.deps.json │ │ │ ├── Pure.NetCoreExtensions.dll │ │ │ └── Pure.NetCoreExtensions.pdb │ └── Release │ │ └── netstandard2.0 │ │ ├── Pure.NetCoreExtensions.deps.json │ │ ├── Pure.NetCoreExtensions.dll │ │ └── Pure.NetCoreExtensions.pdb └── obj │ ├── Debug │ └── netstandard2.0 │ │ ├── Pure.NetCoreExtensions.AssemblyInfo.cs │ │ ├── Pure.NetCoreExtensions.AssemblyInfoInputs.cache │ │ ├── Pure.NetCoreExtensions.csproj.CoreCompileInputs.cache │ │ ├── Pure.NetCoreExtensions.csproj.FileListAbsolute.txt │ │ ├── Pure.NetCoreExtensions.csprojResolveAssemblyReference.cache │ │ ├── Pure.NetCoreExtensions.dll │ │ └── Pure.NetCoreExtensions.pdb │ ├── Pure.NetCoreExtensions.csproj.nuget.cache │ ├── Pure.NetCoreExtensions.csproj.nuget.g.props │ ├── Pure.NetCoreExtensions.csproj.nuget.g.targets │ ├── Release │ └── netstandard2.0 │ │ ├── Pure.NetCoreExtensions.AssemblyInfo.cs │ │ ├── Pure.NetCoreExtensions.AssemblyInfoInputs.cache │ │ ├── Pure.NetCoreExtensions.csproj.CoreCompileInputs.cache │ │ ├── Pure.NetCoreExtensions.csproj.FileListAbsolute.txt │ │ ├── Pure.NetCoreExtensions.csprojResolveAssemblyReference.cache │ │ ├── Pure.NetCoreExtensions.dll │ │ └── Pure.NetCoreExtensions.pdb │ └── project.assets.json └── README.md /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 benson 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/1.jpg -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/Controllers/HelloWorldController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc; 6 | 7 | namespace Pure.NetCoreExtensions.Test.Controllers 8 | { 9 | public class HelloWorldController : Controller 10 | { 11 | public IActionResult Index() 12 | { 13 | return View(); 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM microsoft/aspnetcore:2.0 AS base 2 | WORKDIR /app 3 | EXPOSE 80 4 | 5 | FROM microsoft/aspnetcore-build:2.0 AS build 6 | WORKDIR /src 7 | COPY *.sln ./ 8 | COPY Pure.NetCoreExtensions.Test/Pure.NetCoreExtensions.Test.csproj Pure.NetCoreExtensions.Test/ 9 | COPY Pure.NetCoreExtensions/Pure.NetCoreExtensions.csproj Pure.NetCoreExtensions/ 10 | RUN dotnet restore 11 | COPY . . 12 | WORKDIR /src/Pure.NetCoreExtensions.Test 13 | RUN dotnet build -c Release -o /app 14 | 15 | FROM build AS publish 16 | RUN dotnet publish -c Release -o /app 17 | 18 | FROM base AS final 19 | WORKDIR /app 20 | COPY --from=publish /app . 21 | ENTRYPOINT ["dotnet", "Pure.NetCoreExtensions.Test.dll"] 22 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | using Microsoft.AspNetCore; 7 | using Microsoft.AspNetCore.Hosting; 8 | using Microsoft.Extensions.Configuration; 9 | using Microsoft.Extensions.Logging; 10 | 11 | namespace Pure.NetCoreExtensions.Test 12 | { 13 | public class Program 14 | { 15 | static private IConfigurationRoot config = null; 16 | public static void Main(string[] args) 17 | { 18 | config = new ConfigurationBuilder() 19 | .SetBasePath(Directory.GetCurrentDirectory()) 20 | .AddJsonFile("hosting.json", optional: true) 21 | .Build(); 22 | 23 | BuildWebHost(args).Run(); 24 | } 25 | 26 | public static IWebHost BuildWebHost(string[] args) => 27 | WebHost.CreateDefaultBuilder(args) 28 | .UseKestrel() 29 | .UseConfiguration(config) 30 | .UseStartup() 31 | .UseContentRoot(Directory.GetCurrentDirectory()) 32 | .UseIISIntegration() 33 | //.UseHttpSys() 34 | .UseApplicationInsights() 35 | .Build(); 36 | 37 | 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/Properties/PublishProfiles/FolderProfile.pubxml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | FileSystem 9 | FileSystem 10 | Release 11 | Any CPU 12 | 13 | True 14 | False 15 | 5f287a83-0417-4d49-ae57-0f407cc5f92f 16 | bin\Release\PublishOutput 17 | False 18 | 19 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/Properties/PublishProfiles/FolderProfile.pubxml.user: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | <_PublishTargetUrl>E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\PublishOutput 10 | 11 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "iisSettings": { 3 | "windowsAuthentication": false, 4 | "anonymousAuthentication": true, 5 | "iisExpress": { 6 | "applicationUrl": "http://localhost:4274/", 7 | "sslPort": 0 8 | } 9 | }, 10 | "profiles": { 11 | "IIS Express": { 12 | "commandName": "IISExpress", 13 | "launchBrowser": true, 14 | "environmentVariables": { 15 | "ASPNETCORE_ENVIRONMENT": "Development" 16 | } 17 | }, 18 | "Pure.NetCoreExtensions.Test": { 19 | "commandName": "Project", 20 | "launchBrowser": true, 21 | "environmentVariables": { 22 | "ASPNETCORE_ENVIRONMENT": "Development" 23 | }, 24 | "applicationUrl": "http://localhost:4275/" 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/Pure.NetCoreExtensions.Test.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp2.0 5 | ..\docker-compose.dcproj 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/Pure.NetCoreExtensions.Test.csproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | MvcControllerEmptyScaffolder 5 | root/Controller 6 | 600 7 | True 8 | False 9 | False 10 | 11 | False 12 | 600 13 | FolderProfile 14 | 15 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/Startup.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Builder; 6 | using Microsoft.AspNetCore.Hosting; 7 | using Microsoft.AspNetCore.Http; 8 | using Microsoft.Extensions.DependencyInjection; 9 | using Pure.NetCoreExtensions; 10 | 11 | namespace Pure.NetCoreExtensions.Test 12 | { 13 | public class Startup 14 | { 15 | 16 | // This method gets called by the runtime. Use this method to add services to the container. 17 | // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940 18 | public void ConfigureServices(IServiceCollection services) 19 | { 20 | services.AddHttpContextAccessor(); 21 | services.AddMvc(); 22 | services.AddConfiguration(); 23 | } 24 | 25 | // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. 26 | public void Configure(IApplicationBuilder app, IHostingEnvironment env) 27 | { 28 | if (env.IsDevelopment()) 29 | { 30 | app.UseDeveloperExceptionPage(); 31 | } 32 | 33 | 34 | app.UseMvc(routes => 35 | { 36 | routes.MapRoute( 37 | name: "default", 38 | template: "{controller=HelloWorld}/{action=Index}/{id?}"); 39 | }); 40 | app.UseCors(""). 41 | UseExceptionHandler() 42 | .UseGlobalErrorHandling(); 43 | 44 | //global middleware 45 | app.UseGlobalHostingEnvironment(env) 46 | .UseGlobalHttpContext() 47 | .UseGlobalLoggerFactory() 48 | .UseGlobalErrorHandling() 49 | ; 50 | 51 | app.UseGlobalHttpContext(); 52 | 53 | app.UseGlobalLoggerFactory(); 54 | 55 | app.Run(async (context) => 56 | { 57 | await context.Response.WriteAsync("Hello World!"); 58 | }); 59 | } 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/Views/Shared/_Layout.cshtml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | @ViewBag.Title 7 | 8 | 9 |
10 | @RenderBody() 11 |
12 | 13 | 14 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/Views/Shared/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 2 | @addTagHelper *, Pure.NetCoreExtensions -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/Views/Shared/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=(localdb)\\MSSQLLocalDB;Database=_CHANGE_ME;Trusted_Connection=True;MultipleActiveResultSets=true" 4 | }, 5 | "AppSettings": { 6 | "Key1": "Hello", 7 | "Key2": true, 8 | "Key3": 1024.25 9 | } 10 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Any CPU/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Any CPU/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Any CPU/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Any CPU/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.pdb -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Any CPU/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.runtimeconfig.dev.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "additionalProbingPaths": [ 4 | "C:\\Users\\benson\\.dotnet\\store\\|arch|\\|tfm|", 5 | "C:\\Users\\benson\\.nuget\\packages", 6 | "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackagesFallback", 7 | "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" 8 | ] 9 | } 10 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Any CPU/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.runtimeconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "tfm": "netcoreapp2.0", 4 | "framework": { 5 | "name": "Microsoft.NETCore.App", 6 | "version": "2.0.0" 7 | }, 8 | "configProperties": { 9 | "System.GC.Server": true 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Any CPU/Release/netcoreapp2.0/Pure.NetCoreExtensions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Any CPU/Release/netcoreapp2.0/Pure.NetCoreExtensions.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Any CPU/Release/netcoreapp2.0/Pure.NetCoreExtensions.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Any CPU/Release/netcoreapp2.0/Pure.NetCoreExtensions.pdb -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Debug/netcoreapp2.0/Pure.NetCoreExtensions.Test.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Debug/netcoreapp2.0/Pure.NetCoreExtensions.Test.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Debug/netcoreapp2.0/Pure.NetCoreExtensions.Test.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Debug/netcoreapp2.0/Pure.NetCoreExtensions.Test.pdb -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Debug/netcoreapp2.0/Pure.NetCoreExtensions.Test.runtimeconfig.dev.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "additionalProbingPaths": [ 4 | "C:\\Users\\benson\\.dotnet\\store\\|arch|\\|tfm|", 5 | "D:\\nugetcache\\packages\\.nuget\\packages", 6 | "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackagesFallback", 7 | "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" 8 | ] 9 | } 10 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Debug/netcoreapp2.0/Pure.NetCoreExtensions.Test.runtimeconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "tfm": "netcoreapp2.0", 4 | "framework": { 5 | "name": "Microsoft.NETCore.App", 6 | "version": "2.0.0" 7 | }, 8 | "configProperties": { 9 | "System.GC.Server": true 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Debug/netcoreapp2.0/Pure.NetCoreExtensions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Debug/netcoreapp2.0/Pure.NetCoreExtensions.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Debug/netcoreapp2.0/Pure.NetCoreExtensions.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Debug/netcoreapp2.0/Pure.NetCoreExtensions.pdb -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/Microsoft.CodeAnalysis.CSharp.Workspaces.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/Microsoft.CodeAnalysis.CSharp.Workspaces.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/Microsoft.CodeAnalysis.Workspaces.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/Microsoft.CodeAnalysis.Workspaces.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/Microsoft.VisualStudio.Web.CodeGeneration.Contracts.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/Microsoft.VisualStudio.Web.CodeGeneration.Contracts.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/Microsoft.VisualStudio.Web.CodeGeneration.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/Microsoft.VisualStudio.Web.CodeGeneration.Core.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/Microsoft.VisualStudio.Web.CodeGeneration.EntityFrameworkCore.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/Microsoft.VisualStudio.Web.CodeGeneration.EntityFrameworkCore.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/Microsoft.VisualStudio.Web.CodeGeneration.Templating.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/Microsoft.VisualStudio.Web.CodeGeneration.Templating.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/Microsoft.VisualStudio.Web.CodeGeneration.Utils.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/Microsoft.VisualStudio.Web.CodeGeneration.Utils.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/Microsoft.VisualStudio.Web.CodeGeneration.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/Microsoft.VisualStudio.Web.CodeGeneration.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/Microsoft.VisualStudio.Web.CodeGenerators.Mvc.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/Microsoft.VisualStudio.Web.CodeGenerators.Mvc.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/NuGet.Frameworks.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/NuGet.Frameworks.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/Pure.NetCoreExtensions.Test.PrecompiledViews.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/Pure.NetCoreExtensions.Test.PrecompiledViews.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/Pure.NetCoreExtensions.Test.PrecompiledViews.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/Pure.NetCoreExtensions.Test.PrecompiledViews.pdb -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/Pure.NetCoreExtensions.Test.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/Pure.NetCoreExtensions.Test.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/Pure.NetCoreExtensions.Test.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/Pure.NetCoreExtensions.Test.pdb -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/Pure.NetCoreExtensions.Test.runtimeconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "tfm": "netcoreapp2.0", 4 | "framework": { 5 | "name": "Microsoft.NETCore.App", 6 | "version": "2.0.0" 7 | }, 8 | "configProperties": { 9 | "System.GC.Server": true 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/Pure.NetCoreExtensions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/Pure.NetCoreExtensions.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/Pure.NetCoreExtensions.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/Pure.NetCoreExtensions.pdb -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/System.Composition.AttributedModel.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/System.Composition.AttributedModel.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/System.Composition.Convention.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/System.Composition.Convention.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/System.Composition.Hosting.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/System.Composition.Hosting.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/System.Composition.Runtime.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/System.Composition.Runtime.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/System.Composition.TypedParts.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/System.Composition.TypedParts.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=(localdb)\\MSSQLLocalDB;Database=_CHANGE_ME;Trusted_Connection=True;MultipleActiveResultSets=true" 4 | }, 5 | "AppSettings": { 6 | "Key1": "Hello", 7 | "Key2": true, 8 | "Key3": 1024.25 9 | } 10 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/dotnet-aspnet-codegenerator-design.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/dotnet-aspnet-codegenerator-design.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/PublishOutput/web.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.pdb -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.runtimeconfig.dev.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "additionalProbingPaths": [ 4 | "C:\\Users\\benson\\.dotnet\\store\\|arch|\\|tfm|", 5 | "D:\\nugetcache\\packages\\.nuget\\packages", 6 | "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackagesFallback", 7 | "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" 8 | ] 9 | } 10 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.runtimeconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "tfm": "netcoreapp2.0", 4 | "framework": { 5 | "name": "Microsoft.NETCore.App", 6 | "version": "2.0.0" 7 | }, 8 | "configProperties": { 9 | "System.GC.Server": true 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/Pure.NetCoreExtensions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/Pure.NetCoreExtensions.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/Pure.NetCoreExtensions.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/Pure.NetCoreExtensions.pdb -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/centos.7-x64/Pure.NetCoreExtensions.Test.Test: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/centos.7-x64/Pure.NetCoreExtensions.Test.Test -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/centos.7-x64/Pure.NetCoreExtensions.Test.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/centos.7-x64/Pure.NetCoreExtensions.Test.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/centos.7-x64/Pure.NetCoreExtensions.Test.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/centos.7-x64/Pure.NetCoreExtensions.Test.pdb -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/centos.7-x64/Pure.NetCoreExtensions.Test.runtimeconfig.dev.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "additionalProbingPaths": [ 4 | "C:\\Users\\benson\\.dotnet\\store\\|arch|\\|tfm|", 5 | "D:\\nugetcache\\packages\\.nuget\\packages", 6 | "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackagesFallback", 7 | "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" 8 | ] 9 | } 10 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/centos.7-x64/Pure.NetCoreExtensions.Test.runtimeconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "configProperties": { 4 | "System.GC.Server": true 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/centos.7-x64/Pure.NetCoreExtensions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/centos.7-x64/Pure.NetCoreExtensions.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/centos.7-x64/Pure.NetCoreExtensions.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/centos.7-x64/Pure.NetCoreExtensions.pdb -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/centos.7-x64/libhostfxr.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/centos.7-x64/libhostfxr.so -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/centos.7-x64/libhostpolicy.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/centos.7-x64/libhostpolicy.so -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/win10-x64/Pure.NetCoreExtensions.Test.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/win10-x64/Pure.NetCoreExtensions.Test.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/win10-x64/Pure.NetCoreExtensions.Test.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/win10-x64/Pure.NetCoreExtensions.Test.exe -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/win10-x64/Pure.NetCoreExtensions.Test.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/win10-x64/Pure.NetCoreExtensions.Test.pdb -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/win10-x64/Pure.NetCoreExtensions.Test.runtimeconfig.dev.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "additionalProbingPaths": [ 4 | "C:\\Users\\benson\\.dotnet\\store\\|arch|\\|tfm|", 5 | "D:\\nugetcache\\packages\\.nuget\\packages", 6 | "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackagesFallback", 7 | "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" 8 | ] 9 | } 10 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/win10-x64/Pure.NetCoreExtensions.Test.runtimeconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "configProperties": { 4 | "System.GC.Server": true 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/win10-x64/Pure.NetCoreExtensions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/win10-x64/Pure.NetCoreExtensions.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/win10-x64/Pure.NetCoreExtensions.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/win10-x64/Pure.NetCoreExtensions.pdb -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/win10-x64/hostfxr.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/win10-x64/hostfxr.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/win10-x64/hostpolicy.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/win10-x64/hostpolicy.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/win81-x64/Pure.NetCoreExtensions.Test.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/win81-x64/Pure.NetCoreExtensions.Test.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/win81-x64/Pure.NetCoreExtensions.Test.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/win81-x64/Pure.NetCoreExtensions.Test.exe -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/win81-x64/Pure.NetCoreExtensions.Test.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/win81-x64/Pure.NetCoreExtensions.Test.pdb -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/win81-x64/Pure.NetCoreExtensions.Test.runtimeconfig.dev.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "additionalProbingPaths": [ 4 | "C:\\Users\\benson\\.dotnet\\store\\|arch|\\|tfm|", 5 | "D:\\nugetcache\\packages\\.nuget\\packages", 6 | "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackagesFallback", 7 | "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" 8 | ] 9 | } 10 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/win81-x64/Pure.NetCoreExtensions.Test.runtimeconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "configProperties": { 4 | "System.GC.Server": true 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/win81-x64/Pure.NetCoreExtensions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/win81-x64/Pure.NetCoreExtensions.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/win81-x64/Pure.NetCoreExtensions.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/win81-x64/Pure.NetCoreExtensions.pdb -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/win81-x64/hostfxr.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/win81-x64/hostfxr.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/win81-x64/hostpolicy.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/bin/Release/netcoreapp2.0/win81-x64/hostpolicy.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/hosting.json: -------------------------------------------------------------------------------- 1 | { 2 | "urls": "http://*:5010;" 3 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Any CPU/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.42000 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | using System; 12 | using System.Reflection; 13 | 14 | [assembly: System.Reflection.AssemblyCompanyAttribute("Pure.NetCoreExtensions.Test")] 15 | [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] 16 | [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] 17 | [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] 18 | [assembly: System.Reflection.AssemblyProductAttribute("Pure.NetCoreExtensions.Test")] 19 | [assembly: System.Reflection.AssemblyTitleAttribute("Pure.NetCoreExtensions.Test")] 20 | [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] 21 | 22 | // 由 MSBuild WriteCodeFragment 类生成。 23 | 24 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Any CPU/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.AssemblyInfoInputs.cache: -------------------------------------------------------------------------------- 1 | 4576755222e008e3ca50c3802f1887239965217b 2 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Any CPU/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.PrecompiledViews.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Any CPU/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.PrecompiledViews.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Any CPU/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.PrecompiledViews.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Any CPU/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.PrecompiledViews.pdb -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Any CPU/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.csproj.CopyComplete: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Any CPU/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.csproj.CopyComplete -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Any CPU/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | f34b6c1f50d6ef6790ef46d4481b15827034804c 2 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Any CPU/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Any CPU\Release\netcoreapp2.0\Pure.NetCoreExtensions.Test.deps.json 2 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Any CPU\Release\netcoreapp2.0\Pure.NetCoreExtensions.Test.runtimeconfig.json 3 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Any CPU\Release\netcoreapp2.0\Pure.NetCoreExtensions.Test.runtimeconfig.dev.json 4 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Any CPU\Release\netcoreapp2.0\Pure.NetCoreExtensions.Test.dll 5 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Any CPU\Release\netcoreapp2.0\Pure.NetCoreExtensions.Test.pdb 6 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Any CPU\Release\netcoreapp2.0\Pure.NetCoreExtensions.dll 7 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Any CPU\Release\netcoreapp2.0\Pure.NetCoreExtensions.pdb 8 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\obj\Any CPU\Release\netcoreapp2.0\Pure.NetCoreExtensions.Test.csproj.CoreCompileInputs.cache 9 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\obj\Any CPU\Release\netcoreapp2.0\Pure.NetCoreExtensions.Test.AssemblyInfoInputs.cache 10 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\obj\Any CPU\Release\netcoreapp2.0\Pure.NetCoreExtensions.Test.AssemblyInfo.cs 11 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\obj\Any CPU\Release\netcoreapp2.0\Pure.NetCoreExtensions.Test.dll 12 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\obj\Any CPU\Release\netcoreapp2.0\Pure.NetCoreExtensions.Test.pdb 13 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Any CPU/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Any CPU/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Any CPU/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Any CPU/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.pdb -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Any CPU/Release/netcoreapp2.0/microsoft.aspnetcore.mvc.razor.viewcompilation.rsp: -------------------------------------------------------------------------------- 1 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test 2 | --output-path=obj\Any CPU\Release\netcoreapp2.0\ 3 | --application-name=Pure.NetCoreExtensions.Test 4 | --content-root=E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test 5 | --file=E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\Views\HelloWorld\Index.cshtml 6 | --file=E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\Views\Shared\_Layout.cshtml 7 | --file=E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\Views\Shared\_ViewImports.cshtml 8 | --file=E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\Views\Shared\_ViewStart.cshtml 9 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Debug/netcoreapp2.0/Pure.NetCoreExtensions.Test.AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.42000 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | using System; 12 | using System.Reflection; 13 | 14 | [assembly: System.Reflection.AssemblyCompanyAttribute("Pure.NetCoreExtensions.Test")] 15 | [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] 16 | [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] 17 | [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] 18 | [assembly: System.Reflection.AssemblyProductAttribute("Pure.NetCoreExtensions.Test")] 19 | [assembly: System.Reflection.AssemblyTitleAttribute("Pure.NetCoreExtensions.Test")] 20 | [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] 21 | 22 | // 由 MSBuild WriteCodeFragment 类生成。 23 | 24 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Debug/netcoreapp2.0/Pure.NetCoreExtensions.Test.AssemblyInfoInputs.cache: -------------------------------------------------------------------------------- 1 | 804813b6a8574eca3b40ab54c08f138a53966b50 2 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Debug/netcoreapp2.0/Pure.NetCoreExtensions.Test.csproj.CopyComplete: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Debug/netcoreapp2.0/Pure.NetCoreExtensions.Test.csproj.CopyComplete -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Debug/netcoreapp2.0/Pure.NetCoreExtensions.Test.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | b1dd72ae460296ebffaefa6e2336b98cd5d57d30 2 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Debug/netcoreapp2.0/Pure.NetCoreExtensions.Test.csprojResolveAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Debug/netcoreapp2.0/Pure.NetCoreExtensions.Test.csprojResolveAssemblyReference.cache -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Debug/netcoreapp2.0/Pure.NetCoreExtensions.Test.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Debug/netcoreapp2.0/Pure.NetCoreExtensions.Test.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Debug/netcoreapp2.0/Pure.NetCoreExtensions.Test.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Debug/netcoreapp2.0/Pure.NetCoreExtensions.Test.pdb -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Docker/AppType.cache: -------------------------------------------------------------------------------- 1 | AspNetCore -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Docker/CanonicalServiceName.cache: -------------------------------------------------------------------------------- 1 | pure.netcoreextensions.test -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Docker/ProjectReferences.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Docker/ProjectReferences.cache -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Docker/RelativeOutputAssemblyPath.Fast.cache: -------------------------------------------------------------------------------- 1 | bin\Debug\netcoreapp2.0\Pure.NetCoreExtensions.Test.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Docker/RelativeOutputAssemblyPath.Regular.cache: -------------------------------------------------------------------------------- 1 | Pure.NetCoreExtensions.Test.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Docker/TargetFramework.cache: -------------------------------------------------------------------------------- 1 | DotNetCore -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Pure.NetCoreExtensions.Test.csproj.nuget.cache: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "dgSpecHash": "55rcp3n2Gg3ANfkgFFyRKROhOWsOwj6/Hj9LEMkB/Gd3BWiyubfuiOkmT3bU3sFBNN3CyK7kiZGGltnD/G9nqQ==", 4 | "success": true 5 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Pure.NetCoreExtensions.Test.csproj.nuget.g.props: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | True 5 | NuGet 6 | E:\github\Pure.NETCoreExtentensions\Pure.NetCoreExtensions.Test\obj\project.assets.json 7 | D:\nugetcache\packages\.nuget\packages 8 | D:\nugetcache\packages\.nuget\packages;C:\Program Files (x86)\Microsoft SDKs\NuGetPackagesFallback\;C:\Program Files\dotnet\sdk\NuGetFallbackFolder 9 | PackageReference 10 | 4.5.0 11 | 12 | 13 | $(MSBuildAllProjects);$(MSBuildThisFileFullPath) 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Pure.NetCoreExtensions.Test.csproj.nuget.g.targets: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | $(MSBuildAllProjects);$(MSBuildThisFileFullPath) 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/Microsoft.CodeAnalysis.CSharp.Workspaces.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/Microsoft.CodeAnalysis.CSharp.Workspaces.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/Microsoft.CodeAnalysis.Workspaces.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/Microsoft.CodeAnalysis.Workspaces.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/Microsoft.VisualStudio.Web.CodeGeneration.Contracts.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/Microsoft.VisualStudio.Web.CodeGeneration.Contracts.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/Microsoft.VisualStudio.Web.CodeGeneration.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/Microsoft.VisualStudio.Web.CodeGeneration.Core.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/Microsoft.VisualStudio.Web.CodeGeneration.EntityFrameworkCore.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/Microsoft.VisualStudio.Web.CodeGeneration.EntityFrameworkCore.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/Microsoft.VisualStudio.Web.CodeGeneration.Templating.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/Microsoft.VisualStudio.Web.CodeGeneration.Templating.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/Microsoft.VisualStudio.Web.CodeGeneration.Utils.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/Microsoft.VisualStudio.Web.CodeGeneration.Utils.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/Microsoft.VisualStudio.Web.CodeGeneration.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/Microsoft.VisualStudio.Web.CodeGeneration.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/Microsoft.VisualStudio.Web.CodeGenerators.Mvc.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/Microsoft.VisualStudio.Web.CodeGenerators.Mvc.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/NuGet.Frameworks.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/NuGet.Frameworks.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/Pure.NetCoreExtensions.Test.PrecompiledViews.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/Pure.NetCoreExtensions.Test.PrecompiledViews.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/Pure.NetCoreExtensions.Test.PrecompiledViews.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/Pure.NetCoreExtensions.Test.PrecompiledViews.pdb -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/Pure.NetCoreExtensions.Test.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/Pure.NetCoreExtensions.Test.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/Pure.NetCoreExtensions.Test.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/Pure.NetCoreExtensions.Test.pdb -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/Pure.NetCoreExtensions.Test.runtimeconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "tfm": "netcoreapp2.0", 4 | "framework": { 5 | "name": "Microsoft.NETCore.App", 6 | "version": "2.0.0" 7 | }, 8 | "configProperties": { 9 | "System.GC.Server": true 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/Pure.NetCoreExtensions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/Pure.NetCoreExtensions.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/Pure.NetCoreExtensions.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/Pure.NetCoreExtensions.pdb -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/System.Composition.AttributedModel.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/System.Composition.AttributedModel.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/System.Composition.Convention.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/System.Composition.Convention.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/System.Composition.Hosting.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/System.Composition.Hosting.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/System.Composition.Runtime.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/System.Composition.Runtime.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/System.Composition.TypedParts.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/System.Composition.TypedParts.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=(localdb)\\MSSQLLocalDB;Database=_CHANGE_ME;Trusted_Connection=True;MultipleActiveResultSets=true" 4 | }, 5 | "AppSettings": { 6 | "Key1": "Hello", 7 | "Key2": true, 8 | "Key3": 1024.25 9 | } 10 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/dotnet-aspnet-codegenerator-design.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/dotnet-aspnet-codegenerator-design.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/PubTmp/Out/web.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.42000 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | using System; 12 | using System.Reflection; 13 | 14 | [assembly: System.Reflection.AssemblyCompanyAttribute("Pure.NetCoreExtensions.Test")] 15 | [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] 16 | [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] 17 | [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] 18 | [assembly: System.Reflection.AssemblyProductAttribute("Pure.NetCoreExtensions.Test")] 19 | [assembly: System.Reflection.AssemblyTitleAttribute("Pure.NetCoreExtensions.Test")] 20 | [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] 21 | 22 | // 由 MSBuild WriteCodeFragment 类生成。 23 | 24 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.AssemblyInfoInputs.cache: -------------------------------------------------------------------------------- 1 | 4576755222e008e3ca50c3802f1887239965217b 2 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.PrecompiledViews.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.PrecompiledViews.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.PrecompiledViews.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.PrecompiledViews.pdb -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.csproj.CopyComplete: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.csproj.CopyComplete -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | e69be1b5254bdb20e971a686084923061a07fbae 2 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\Pure.NetCoreExtensions.Test.deps.json 2 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\Pure.NetCoreExtensions.Test.runtimeconfig.json 3 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\Pure.NetCoreExtensions.Test.runtimeconfig.dev.json 4 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\Pure.NetCoreExtensions.Test.dll 5 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\Pure.NetCoreExtensions.Test.pdb 6 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\Pure.NetCoreExtensions.dll 7 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\Pure.NetCoreExtensions.pdb 8 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\obj\Release\netcoreapp2.0\Pure.NetCoreExtensions.Test.csprojResolveAssemblyReference.cache 9 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\obj\Release\netcoreapp2.0\Pure.NetCoreExtensions.Test.csproj.CoreCompileInputs.cache 10 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\obj\Release\netcoreapp2.0\Pure.NetCoreExtensions.Test.AssemblyInfoInputs.cache 11 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\obj\Release\netcoreapp2.0\Pure.NetCoreExtensions.Test.AssemblyInfo.cs 12 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\obj\Release\netcoreapp2.0\Pure.NetCoreExtensions.Test.dll 13 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\obj\Release\netcoreapp2.0\Pure.NetCoreExtensions.Test.pdb 14 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.csprojResolveAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.csprojResolveAssemblyReference.cache -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/Pure.NetCoreExtensions.Test.pdb -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/centos.7-x64/Pure.NetCoreExtensions.Test.AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 由 MSBuild WriteCodeFragment 类生成。 4 | // 5 | //------------------------------------------------------------------------------ 6 | 7 | using System; 8 | using System.Reflection; 9 | 10 | [assembly: System.Reflection.AssemblyCompanyAttribute("Pure.NetCoreExtensions.Test")] 11 | [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] 12 | [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] 13 | [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] 14 | [assembly: System.Reflection.AssemblyProductAttribute("Pure.NetCoreExtensions.Test")] 15 | [assembly: System.Reflection.AssemblyTitleAttribute("Pure.NetCoreExtensions.Test")] 16 | [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] 17 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/centos.7-x64/Pure.NetCoreExtensions.Test.AssemblyInfoInputs.cache: -------------------------------------------------------------------------------- 1 | 4576755222e008e3ca50c3802f1887239965217b 2 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/centos.7-x64/Pure.NetCoreExtensions.Test.csproj.CopyComplete: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/centos.7-x64/Pure.NetCoreExtensions.Test.csproj.CopyComplete -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/centos.7-x64/Pure.NetCoreExtensions.Test.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | e69be1b5254bdb20e971a686084923061a07fbae 2 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/centos.7-x64/Pure.NetCoreExtensions.Test.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\centos.7-x64\libhostpolicy.so 2 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\centos.7-x64\libhostfxr.so 3 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\centos.7-x64\Pure.NetCoreExtensions.Test.Test 4 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\centos.7-x64\Pure.NetCoreExtensions.Test.deps.json 5 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\centos.7-x64\Pure.NetCoreExtensions.Test.runtimeconfig.json 6 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\centos.7-x64\Pure.NetCoreExtensions.Test.runtimeconfig.dev.json 7 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\centos.7-x64\Pure.NetCoreExtensions.Test.dll 8 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\centos.7-x64\Pure.NetCoreExtensions.Test.pdb 9 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\centos.7-x64\Pure.NetCoreExtensions.dll 10 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\centos.7-x64\Pure.NetCoreExtensions.pdb 11 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\obj\Release\netcoreapp2.0\centos.7-x64\Pure.NetCoreExtensions.Test.csproj.CoreCompileInputs.cache 12 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\obj\Release\netcoreapp2.0\centos.7-x64\Pure.NetCoreExtensions.Test.AssemblyInfoInputs.cache 13 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\obj\Release\netcoreapp2.0\centos.7-x64\Pure.NetCoreExtensions.Test.AssemblyInfo.cs 14 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\obj\Release\netcoreapp2.0\centos.7-x64\Pure.NetCoreExtensions.Test.dll 15 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\obj\Release\netcoreapp2.0\centos.7-x64\Pure.NetCoreExtensions.Test.pdb 16 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/centos.7-x64/Pure.NetCoreExtensions.Test.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/centos.7-x64/Pure.NetCoreExtensions.Test.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/centos.7-x64/Pure.NetCoreExtensions.Test.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/centos.7-x64/Pure.NetCoreExtensions.Test.pdb -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/microsoft.aspnetcore.mvc.razor.viewcompilation.rsp: -------------------------------------------------------------------------------- 1 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test 2 | --output-path=obj\Release\netcoreapp2.0\ 3 | --application-name=Pure.NetCoreExtensions.Test 4 | --content-root=E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test 5 | --file=E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\Views\HelloWorld\Index.cshtml 6 | --file=E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\Views\Shared\_Layout.cshtml 7 | --file=E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\Views\Shared\_ViewImports.cshtml 8 | --file=E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\Views\Shared\_ViewStart.cshtml 9 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/win10-x64/Pure.NetCoreExtensions.Test.AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 由 MSBuild WriteCodeFragment 类生成。 4 | // 5 | //------------------------------------------------------------------------------ 6 | 7 | using System; 8 | using System.Reflection; 9 | 10 | [assembly: System.Reflection.AssemblyCompanyAttribute("Pure.NetCoreExtensions.Test")] 11 | [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] 12 | [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] 13 | [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] 14 | [assembly: System.Reflection.AssemblyProductAttribute("Pure.NetCoreExtensions.Test")] 15 | [assembly: System.Reflection.AssemblyTitleAttribute("Pure.NetCoreExtensions.Test")] 16 | [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] 17 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/win10-x64/Pure.NetCoreExtensions.Test.AssemblyInfoInputs.cache: -------------------------------------------------------------------------------- 1 | 4576755222e008e3ca50c3802f1887239965217b 2 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/win10-x64/Pure.NetCoreExtensions.Test.csproj.CopyComplete: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/win10-x64/Pure.NetCoreExtensions.Test.csproj.CopyComplete -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/win10-x64/Pure.NetCoreExtensions.Test.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | e69be1b5254bdb20e971a686084923061a07fbae 2 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/win10-x64/Pure.NetCoreExtensions.Test.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\win10-x64\hostpolicy.dll 2 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\win10-x64\hostfxr.dll 3 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\win10-x64\Pure.NetCoreExtensions.Test.exe 4 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\win10-x64\Pure.NetCoreExtensions.Test.deps.json 5 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\win10-x64\Pure.NetCoreExtensions.Test.runtimeconfig.json 6 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\win10-x64\Pure.NetCoreExtensions.Test.runtimeconfig.dev.json 7 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\win10-x64\Pure.NetCoreExtensions.Test.dll 8 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\win10-x64\Pure.NetCoreExtensions.Test.pdb 9 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\win10-x64\Pure.NetCoreExtensions.dll 10 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\win10-x64\Pure.NetCoreExtensions.pdb 11 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\obj\Release\netcoreapp2.0\win10-x64\Pure.NetCoreExtensions.Test.csproj.CoreCompileInputs.cache 12 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\obj\Release\netcoreapp2.0\win10-x64\Pure.NetCoreExtensions.Test.AssemblyInfoInputs.cache 13 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\obj\Release\netcoreapp2.0\win10-x64\Pure.NetCoreExtensions.Test.AssemblyInfo.cs 14 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\obj\Release\netcoreapp2.0\win10-x64\Pure.NetCoreExtensions.Test.dll 15 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\obj\Release\netcoreapp2.0\win10-x64\Pure.NetCoreExtensions.Test.pdb 16 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/win10-x64/Pure.NetCoreExtensions.Test.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/win10-x64/Pure.NetCoreExtensions.Test.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/win10-x64/Pure.NetCoreExtensions.Test.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/win10-x64/Pure.NetCoreExtensions.Test.pdb -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/win81-x64/Pure.NetCoreExtensions.Test.AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 由 MSBuild WriteCodeFragment 类生成。 4 | // 5 | //------------------------------------------------------------------------------ 6 | 7 | using System; 8 | using System.Reflection; 9 | 10 | [assembly: System.Reflection.AssemblyCompanyAttribute("Pure.NetCoreExtensions.Test")] 11 | [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] 12 | [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] 13 | [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] 14 | [assembly: System.Reflection.AssemblyProductAttribute("Pure.NetCoreExtensions.Test")] 15 | [assembly: System.Reflection.AssemblyTitleAttribute("Pure.NetCoreExtensions.Test")] 16 | [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] 17 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/win81-x64/Pure.NetCoreExtensions.Test.AssemblyInfoInputs.cache: -------------------------------------------------------------------------------- 1 | 4576755222e008e3ca50c3802f1887239965217b 2 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/win81-x64/Pure.NetCoreExtensions.Test.csproj.CopyComplete: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/win81-x64/Pure.NetCoreExtensions.Test.csproj.CopyComplete -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/win81-x64/Pure.NetCoreExtensions.Test.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | e69be1b5254bdb20e971a686084923061a07fbae 2 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/win81-x64/Pure.NetCoreExtensions.Test.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\win81-x64\hostpolicy.dll 2 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\win81-x64\hostfxr.dll 3 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\win81-x64\Pure.NetCoreExtensions.Test.exe 4 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\win81-x64\Pure.NetCoreExtensions.Test.deps.json 5 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\win81-x64\Pure.NetCoreExtensions.Test.runtimeconfig.json 6 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\win81-x64\Pure.NetCoreExtensions.Test.runtimeconfig.dev.json 7 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\win81-x64\Pure.NetCoreExtensions.Test.dll 8 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\win81-x64\Pure.NetCoreExtensions.Test.pdb 9 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\win81-x64\Pure.NetCoreExtensions.dll 10 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\bin\Release\netcoreapp2.0\win81-x64\Pure.NetCoreExtensions.pdb 11 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\obj\Release\netcoreapp2.0\win81-x64\Pure.NetCoreExtensions.Test.csproj.CoreCompileInputs.cache 12 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\obj\Release\netcoreapp2.0\win81-x64\Pure.NetCoreExtensions.Test.AssemblyInfoInputs.cache 13 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\obj\Release\netcoreapp2.0\win81-x64\Pure.NetCoreExtensions.Test.AssemblyInfo.cs 14 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\obj\Release\netcoreapp2.0\win81-x64\Pure.NetCoreExtensions.Test.dll 15 | E:\Benson\Source\RoGenerator\Pure\Pure.NETCore.Ext\Pure.NetCore.Ext\Pure.NetCoreExtensions.Test\obj\Release\netcoreapp2.0\win81-x64\Pure.NetCoreExtensions.Test.pdb 16 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/win81-x64/Pure.NetCoreExtensions.Test.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/win81-x64/Pure.NetCoreExtensions.Test.dll -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/win81-x64/Pure.NetCoreExtensions.Test.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/Release/netcoreapp2.0/win81-x64/Pure.NetCoreExtensions.Test.pdb -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/netcoreapp2.0/centos.7-x64/host/Pure.NetCoreExtensions.Test: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/netcoreapp2.0/centos.7-x64/host/Pure.NetCoreExtensions.Test -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/netcoreapp2.0/win10-x64/host/Pure.NetCoreExtensions.Test.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/netcoreapp2.0/win10-x64/host/Pure.NetCoreExtensions.Test.exe -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.Test/obj/netcoreapp2.0/win81-x64/host/Pure.NetCoreExtensions.Test.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions.Test/obj/netcoreapp2.0/win81-x64/host/Pure.NetCoreExtensions.Test.exe -------------------------------------------------------------------------------- /Pure.NetCoreExtensions.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.27130.2010 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pure.NetCoreExtensions", "Pure.NetCoreExtensions\Pure.NetCoreExtensions.csproj", "{8301B245-047C-4B4B-8D39-299332061238}" 7 | EndProject 8 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pure.NetCoreExtensions.Test", "Pure.NetCoreExtensions.Test\Pure.NetCoreExtensions.Test.csproj", "{5F287A83-0417-4D49-AE57-0F407CC5F92F}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Release|Any CPU = Release|Any CPU 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {8301B245-047C-4B4B-8D39-299332061238}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 17 | {8301B245-047C-4B4B-8D39-299332061238}.Debug|Any CPU.Build.0 = Debug|Any CPU 18 | {8301B245-047C-4B4B-8D39-299332061238}.Release|Any CPU.ActiveCfg = Release|Any CPU 19 | {8301B245-047C-4B4B-8D39-299332061238}.Release|Any CPU.Build.0 = Release|Any CPU 20 | {5F287A83-0417-4D49-AE57-0F407CC5F92F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 21 | {5F287A83-0417-4D49-AE57-0F407CC5F92F}.Debug|Any CPU.Build.0 = Debug|Any CPU 22 | {5F287A83-0417-4D49-AE57-0F407CC5F92F}.Release|Any CPU.ActiveCfg = Release|Any CPU 23 | {5F287A83-0417-4D49-AE57-0F407CC5F92F}.Release|Any CPU.Build.0 = Release|Any CPU 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {B9E1D0E4-A8F3-42BF-93BA-42430FF4BCF4} 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Common/DateTimeExt.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Pure.NetCoreExtensions 4 | { 5 | internal static class DateTimeExt 6 | { 7 | public static long ToTimeStamp(this System.DateTime self) 8 | { 9 | return DateTimeToStamp(self); 10 | } 11 | 12 | private static System.DateTime FromTimeStamp(this DateTime self, long timeStamp) 13 | { 14 | System.DateTime dtStart = new System.DateTime(1970, 1, 1); 15 | var tmp = timeStamp.ToString(); 16 | if (tmp.Length == 10) 17 | timeStamp *= 10000000; 18 | else 19 | timeStamp *= 10000; 20 | TimeSpan toNow = new TimeSpan(timeStamp); 21 | return dtStart.Add(toNow); 22 | } 23 | 24 | public static long DateTimeToStamp(System.DateTime time) 25 | { 26 | System.DateTime startTime = new System.DateTime(1970, 1, 1); 27 | return (long)(time - startTime).TotalMilliseconds; 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Common/StringExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | 5 | namespace Pure.NetCoreExtensions 6 | { 7 | internal static class StringExtensions 8 | { 9 | public static int[] IndexOfMany(this string self, string substr) 10 | { 11 | var ret = new List(); 12 | var ch1 = self.ToCharArray(); 13 | var ch2 = substr.ToCharArray(); 14 | for (var i = 0; i <= ch1.Length - ch2.Length; i++) 15 | { 16 | var flag = true; 17 | for (var j = 0; j < ch2.Length; i++) 18 | { 19 | if (ch1[i + j] != ch2[j]) 20 | { 21 | flag = false; 22 | break; 23 | } 24 | } 25 | if (flag) 26 | ret.Add(i); 27 | } 28 | return ret.ToArray(); 29 | } 30 | 31 | public static int CountSubString(this string self, string substr) 32 | { 33 | return self.IndexOfMany(substr).Count(); 34 | } 35 | 36 | 37 | public static string PopFrontMatch(this string self, string str) 38 | { 39 | if (str.Length > self.Length) 40 | return self; 41 | else if (self.IndexOf(str) == 0) 42 | return self.Substring(str.Length); 43 | else 44 | return self; 45 | } 46 | 47 | public static string PopBackMatch(this string self, string str) 48 | { 49 | if (str.Length > self.Length) 50 | return self; 51 | else if (self.LastIndexOf(str) == self.Length - str.Length) 52 | return self.Substring(0, self.Length - str.Length); 53 | else 54 | return self; 55 | } 56 | 57 | public static string PopFront(this string self, int count = 1) 58 | { 59 | if (count > self.Length || count < 0) 60 | throw new IndexOutOfRangeException(); 61 | return self.Substring(count); 62 | } 63 | 64 | public static string PopBack(this string self, int count = 1) 65 | { 66 | if (count > self.Length || count < 0) 67 | throw new IndexOutOfRangeException(); 68 | return self.Substring(0, self.Length - count); 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Configuration/ConnectionStringSettings.cs: -------------------------------------------------------------------------------- 1 | namespace Pure.NetCoreExtensions 2 | { 3 | public class ConnectionStringSettings 4 | { 5 | public string ProviderName { get; internal set; } 6 | public string ConnectionString { get; internal set; } 7 | public string Name { get; internal set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Configuration/ConnectionStringSettingsCollection.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | namespace Pure.NetCoreExtensions 3 | { 4 | public class ConnectionStringSettingsCollection: List 5 | { 6 | public ConnectionStringSettings this[string name] 7 | { 8 | get 9 | { 10 | for (int i = 0; i < base.Count; i++) 11 | { 12 | if (base[i].Name.ToLower() == name.ToLower()) 13 | { 14 | return base[i]; 15 | } 16 | } 17 | return null; 18 | } 19 | } 20 | 21 | } 22 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Cookies/CookiesExtensions.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Extensions.DependencyInjection; 2 | namespace Pure.NetCoreExtensions 3 | { 4 | public static class CookiesExtensions 5 | { 6 | public static IServiceCollection AddDefaultCookies(this IServiceCollection self) 7 | { 8 | return self.AddScoped(); 9 | } 10 | } 11 | 12 | } 13 | 14 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/DependencyInjection/GlobalServiceProvider.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Pure.NetCoreExtensions 4 | { 5 | public class GlobalServiceProvider 6 | { 7 | private static IServiceProvider _service; 8 | 9 | public static IServiceProvider Current => _service; 10 | internal static void Configure(IServiceProvider svr) 11 | { 12 | _service = svr; 13 | } 14 | 15 | 16 | 17 | 18 | } 19 | 20 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/DependencyInjection/HttpContextAccessorExtensions.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using Microsoft.AspNetCore.Http; 3 | using Microsoft.AspNetCore.Mvc.Infrastructure; 4 | 5 | namespace Microsoft.Extensions.DependencyInjection 6 | { 7 | public static class HttpContextAccessorExtensions 8 | { 9 | public static IServiceCollection AddContextAccessor(this IServiceCollection self) 10 | { 11 | if (self.Count(x => x.ServiceType == typeof(IHttpContextAccessor)) == 0) 12 | self.AddSingleton(); 13 | 14 | if (self.Count(x => x.ServiceType == typeof(IActionContextAccessor)) == 0) 15 | self.AddSingleton(); 16 | 17 | return self; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/DependencyInjection/IScoped.cs: -------------------------------------------------------------------------------- 1 | namespace Pure.NetCoreExtensions 2 | { 3 | public interface IScoped 4 | { 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/DependencyInjection/ISingleton.cs: -------------------------------------------------------------------------------- 1 | namespace Pure.NetCoreExtensions 2 | { 3 | public interface ISingleton 4 | { 5 | 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/DependencyInjection/ITransient.cs: -------------------------------------------------------------------------------- 1 | namespace Pure.NetCoreExtensions 2 | { 3 | public interface ITransient 4 | { 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/DependencyInjection/ServiceRegister.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Extensions.DependencyInjection; 2 | using System.Reflection; 3 | 4 | namespace Pure.NetCoreExtensions 5 | { 6 | public sealed class ServiceRegister 7 | { 8 | private static readonly TypeInfo TransientType = typeof(ITransient).GetTypeInfo(); 9 | 10 | private static readonly TypeInfo ScopedType = typeof(IScoped).GetTypeInfo(); 11 | 12 | private static readonly TypeInfo SingletonType = typeof(ISingleton).GetTypeInfo(); 13 | 14 | public void RegisterAssembly(IServiceCollection services, Assembly assembly) 15 | { 16 | foreach (TypeInfo type in assembly.DefinedTypes) 17 | { 18 | RegisterType(services, type); 19 | } 20 | } 21 | 22 | public void RegisterType(IServiceCollection services, TypeInfo type) 23 | { 24 | //Do not regist interfaces 25 | if (type.IsInterface) 26 | { 27 | return; 28 | } 29 | 30 | //Do not regist abstract class 31 | if (type.IsAbstract) 32 | { 33 | return; 34 | } 35 | 36 | if (TransientType.IsAssignableFrom(type)) 37 | { 38 | services.AddTransient(type.AsType()); 39 | } 40 | else if (ScopedType.IsAssignableFrom(type)) 41 | { 42 | services.AddScoped(type.AsType()); 43 | } 44 | else if (SingletonType.IsAssignableFrom(type)) 45 | { 46 | services.AddSingleton(type.AsType()); 47 | } 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Env/EnvironmentExtensions.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Builder; 2 | using Microsoft.AspNetCore.Hosting; 3 | using Microsoft.Extensions.DependencyInjection; 4 | namespace Pure.NetCoreExtensions 5 | { 6 | public static class EnvironmentExtensions 7 | { 8 | /// 9 | /// 启用全局静态化HostingEnvironment 10 | /// 11 | /// 12 | /// 13 | public static IApplicationBuilder UseGlobalHostingEnvironment(this IApplicationBuilder app) 14 | { 15 | var httpContextAccessor = app.ApplicationServices.GetRequiredService(); 16 | GlobalHostEnvironment.Configure(httpContextAccessor); 17 | return app; 18 | } 19 | 20 | /// 21 | /// 启用全局静态化HostingEnvironment 22 | /// 23 | /// 24 | /// 25 | public static IApplicationBuilder UseGlobalHostingEnvironment(this IApplicationBuilder app, IHostingEnvironment env) 26 | { 27 | GlobalHostEnvironment.Configure(env); 28 | return app; 29 | } 30 | } 31 | 32 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Env/GlobalHostEnvironment.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Hosting; 2 | namespace Pure.NetCoreExtensions 3 | { 4 | public class GlobalHostEnvironment 5 | { 6 | private static IHostingEnvironment _env; 7 | 8 | public static IHostingEnvironment Current => _env; 9 | internal static void Configure(IHostingEnvironment env) 10 | { 11 | _env = env; 12 | } 13 | 14 | public static string WebRootPath { get { return Current.WebRootPath; } } 15 | public static string ContentRootPath { get { return Current.ContentRootPath; } } 16 | public static string EnvironmentName { get { return Current.EnvironmentName; } } 17 | public static string ApplicationName { get { return Current.ApplicationName; } } 18 | 19 | 20 | 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/FriendlyExceptions/Extensions/ApplicationBuilderExtensions.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Builder; 2 | 3 | namespace Pure.NetCoreExtensions.FriendlyExceptions 4 | { 5 | public static class ApplicationBuilderExtensions 6 | { 7 | public static void UseFriendlyExceptions(this IApplicationBuilder appBuilder) 8 | { 9 | appBuilder.UseMiddleware(); 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/FriendlyExceptions/Extensions/HttpContextExtensions.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Http; 2 | using Microsoft.AspNetCore.Http.Features; 3 | using Microsoft.Extensions.Options; 4 | using Pure.NetCoreExtensions.FriendlyExceptions.Options; 5 | using System; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace Pure.NetCoreExtensions.FriendlyExceptions 10 | { 11 | internal static class HttpContextExtensions 12 | { 13 | internal static async Task HandleExceptionAsync(this Microsoft.AspNetCore.Http.HttpContext context, 14 | IOptions options, 15 | Exception exception) 16 | { 17 | var transformer = options.Value.Transforms?.FindTransform(exception); 18 | if (transformer == null) 19 | throw exception; 20 | 21 | var content = transformer.GetContent(exception); 22 | 23 | context.Response.ContentType = transformer.ContentType; 24 | context.Response.StatusCode = (int) transformer.StatusCode; 25 | context.Response.HttpContext.Features.Get().ReasonPhrase = transformer.ReasonPhrase; 26 | context.Response.ContentLength = Encoding.UTF8.GetByteCount(content); 27 | await context.Response.WriteAsync(content); 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/FriendlyExceptions/Extensions/ServiceCollectionExtensions.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Extensions.DependencyInjection; 2 | using Pure.NetCoreExtensions.FriendlyExceptions.Options; 3 | using System; 4 | 5 | namespace Pure.NetCoreExtensions.FriendlyExceptions 6 | { 7 | public static class ServiceCollectionExtensions 8 | { 9 | public static void AddFriendlyExceptionsTransforms(this IServiceCollection services, 10 | Action setupAction) 11 | { 12 | services.Configure(setupAction); 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/FriendlyExceptions/FriendlyExceptionAttribute.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc.Filters; 2 | using Microsoft.Extensions.Options; 3 | using Pure.NetCoreExtensions.FriendlyExceptions.Options; 4 | using System.Threading.Tasks; 5 | 6 | namespace Pure.NetCoreExtensions.FriendlyExceptions 7 | { 8 | public class FriendlyExceptionAttribute : ExceptionFilterAttribute 9 | { 10 | public override async Task OnExceptionAsync(ExceptionContext context) 11 | { 12 | if (context.Exception != null) 13 | { 14 | var options = context.HttpContext.RequestServices.GetService(typeof(IOptions)) as IOptions; 15 | await context.HttpContext.HandleExceptionAsync(options, context.Exception); 16 | context.ExceptionHandled = true; 17 | } 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/FriendlyExceptions/FriendlyExceptionsMiddleware.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Http; 2 | using Microsoft.Extensions.Options; 3 | using Pure.NetCoreExtensions.FriendlyExceptions.Options; 4 | using System; 5 | using System.Threading.Tasks; 6 | 7 | namespace Pure.NetCoreExtensions.FriendlyExceptions 8 | { 9 | internal class FriendlyExceptionsMiddleware 10 | { 11 | private readonly RequestDelegate _next; 12 | private readonly IOptions _options; 13 | 14 | public FriendlyExceptionsMiddleware(RequestDelegate next, 15 | IOptions options) 16 | { 17 | _next = next; 18 | _options = options; 19 | } 20 | 21 | public async Task Invoke(Microsoft.AspNetCore.Http.HttpContext context) 22 | { 23 | try 24 | { 25 | await _next(context); 26 | } 27 | catch (Exception exception) 28 | { 29 | await context.HandleExceptionAsync(_options, exception); 30 | } 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/FriendlyExceptions/Options/TranformOptions.cs: -------------------------------------------------------------------------------- 1 | using Pure.NetCoreExtensions.FriendlyExceptions.Transforms.Interfaces; 2 | 3 | namespace Pure.NetCoreExtensions.FriendlyExceptions.Options 4 | { 5 | public class TranformOptions 6 | { 7 | public virtual ITransformsCollection Transforms { get; set; } 8 | } 9 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/FriendlyExceptions/Transforms/Interfaces/ITransform.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Net; 3 | 4 | namespace Pure.NetCoreExtensions.FriendlyExceptions.Transforms.Interfaces 5 | { 6 | public interface ITransform 7 | { 8 | HttpStatusCode StatusCode { get; } 9 | string ReasonPhrase { get; } 10 | string ContentType { get; } 11 | string GetContent(Exception ex); 12 | bool CanHandle(T2 ex) where T2 : Exception; 13 | } 14 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/FriendlyExceptions/Transforms/Interfaces/ITransformTo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Net; 3 | 4 | namespace Pure.NetCoreExtensions.FriendlyExceptions.Transforms.Interfaces 5 | { 6 | public interface ITransformTo 7 | { 8 | ITransformsMap To(HttpStatusCode statusCode, string reasonPhrase, 9 | Func contentGenerator, string contentType = "text/plain"); 10 | } 11 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/FriendlyExceptions/Transforms/Interfaces/ITransformsCollection.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Pure.NetCoreExtensions.FriendlyExceptions.Transforms.Interfaces 4 | { 5 | public interface ITransformsCollection 6 | { 7 | ITransform FindTransform(Exception exception); 8 | } 9 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/FriendlyExceptions/Transforms/Interfaces/ITransformsMap.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Pure.NetCoreExtensions.FriendlyExceptions.Transforms.Interfaces 4 | { 5 | public interface ITransformsMap 6 | { 7 | ITransformTo Map() where T : Exception; 8 | ITransformTo Map(Func matcher); 9 | ITransformTo MapAllOthers(); 10 | ITransformsCollection Done(); 11 | } 12 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Helper/PathHelper.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | 3 | namespace Pure.NetCoreExtensions 4 | { 5 | public static class PathHelper 6 | { 7 | static string RootPath = ""; 8 | static PathHelper() 9 | { 10 | RootPath = Directory.GetCurrentDirectory(); 11 | } 12 | 13 | public static string GetBaseRootPath() 14 | { 15 | return RootPath; 16 | } 17 | 18 | public static string Combine(params string[] paths) 19 | { 20 | return System.IO.Path.Combine(paths); 21 | } 22 | public static string CombineWithRootPath(string path) 23 | { 24 | return System.IO.Path.Combine(GetBaseRootPath(), path); 25 | } 26 | public static string MapPath(string path) 27 | { 28 | return CombineWithRootPath(path.Replace("~/", "")); 29 | } 30 | 31 | 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/HowToUse.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions/HowToUse.txt -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Http/HeaderDictionaryExtensions.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Http; 2 | using System.Linq; 3 | 4 | namespace Pure.NetCoreExtensions 5 | { 6 | public static class HeaderDictionaryExtensions 7 | { 8 | public static string FirstOrDefault(this IHeaderDictionary headers, string key) 9 | { 10 | if (headers.TryGetValue(key, out var values) && !string.IsNullOrWhiteSpace(values)) 11 | { 12 | return values.First().Split(',').First(); 13 | } 14 | 15 | return null; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Http/HttpCookieCollection.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Http; 2 | using System.Collections.Generic; 3 | using System.Collections.Specialized; 4 | namespace Pure.NetCoreExtensions 5 | { 6 | public class HttpCookieCollection : NameObjectCollectionBase, IResponseCookies 7 | { 8 | Dictionary dic = new Dictionary(); 9 | 10 | Microsoft.AspNetCore.Http.HttpContext context; 11 | 12 | public HttpCookieCollection(Microsoft.AspNetCore.Http.HttpContext context) 13 | { 14 | this.context = context; 15 | } 16 | 17 | // public HttpCookie this[int index] { get { return dic[index]; } } 18 | 19 | public HttpCookieWrapper this[string name] { get { return dic[name]; } } 20 | 21 | public void Add(HttpCookieWrapper cookie) 22 | { 23 | Add(cookie, true); 24 | } 25 | public void Add(HttpCookieWrapper cookie, bool appendToReponse) 26 | { 27 | if (!appendToReponse) 28 | { 29 | dic.Add(cookie.Name, cookie); 30 | return; 31 | } 32 | if (context != null && cookie != null) 33 | { 34 | Append(cookie.Name, cookie.Value, cookie.ToCookieOptions()); 35 | } 36 | } 37 | 38 | public void Append(string key, string value) 39 | { 40 | Append(key, value, new CookieOptions()); 41 | } 42 | 43 | public void Append(string key, string value, CookieOptions options) 44 | { 45 | // context.Response.Headers["Set-Cookie"] 46 | //context.Response.Cookies.Delete(key); 47 | context.Response.Cookies.Append(key, value, options); 48 | HttpCookieWrapper cookie = options; 49 | cookie.Name = key; 50 | cookie.Value = value; 51 | dic.Add(cookie.Name, cookie); 52 | } 53 | 54 | public void Delete(string key) 55 | { 56 | Delete(key, null); 57 | } 58 | 59 | public void Delete(string key, CookieOptions options) 60 | { 61 | context.Response.Cookies.Delete(key, options); 62 | dic.Remove(key); 63 | } 64 | } 65 | 66 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Http/HttpCookieWrapper.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Http; 2 | using System; 3 | namespace Pure.NetCoreExtensions 4 | { 5 | public class HttpCookieWrapper 6 | { 7 | public HttpCookieWrapper() { } 8 | public HttpCookieWrapper(string name) 9 | { 10 | this.Name = name; 11 | } 12 | public HttpCookieWrapper(string name, string value) 13 | { 14 | this.Name = name; 15 | this.Value = value; 16 | } 17 | 18 | public string Name { get; set; } 19 | public DateTime Expires { get; set; } 20 | public string Path { get; set; } 21 | public bool HttpOnly { get; set; } 22 | public string Value { get; set; } 23 | public string Domain { get; set; } 24 | /// 25 | /// 转换后,还得补上name,value 26 | /// 27 | /// 28 | public static implicit operator HttpCookieWrapper(CookieOptions op) 29 | { 30 | HttpCookieWrapper cookie = new HttpCookieWrapper(); 31 | cookie.Domain = op.Domain; 32 | if (op.Expires.HasValue) 33 | { 34 | cookie.Expires = ConvertFromDateTimeOffset(op.Expires.Value); 35 | } 36 | cookie.HttpOnly = op.HttpOnly; 37 | cookie.Path = op.Path; 38 | return cookie; 39 | } 40 | public CookieOptions ToCookieOptions() 41 | { 42 | CookieOptions op = new CookieOptions(); 43 | op.Domain = this.Domain; 44 | op.Expires = ConverFromDateTime(this.Expires); 45 | op.HttpOnly = this.HttpOnly; 46 | op.Path = string.IsNullOrEmpty(this.Path) ? "/" : this.Path; 47 | return op; 48 | } 49 | static DateTime ConvertFromDateTimeOffset(DateTimeOffset dateTime) 50 | { 51 | if (dateTime.Offset.Equals(TimeSpan.Zero)) 52 | return dateTime.UtcDateTime; 53 | else if (dateTime.Offset.Equals(TimeZoneInfo.Local.GetUtcOffset(dateTime.DateTime))) 54 | return DateTime.SpecifyKind(dateTime.DateTime, DateTimeKind.Local); 55 | else 56 | return dateTime.DateTime; 57 | } 58 | static DateTimeOffset ConverFromDateTime(DateTime dateTime) 59 | { 60 | return dateTime.ToUniversalTime() <= DateTimeOffset.MinValue.UtcDateTime 61 | ? DateTimeOffset.MinValue 62 | : new DateTimeOffset(dateTime); 63 | 64 | // return new DateTimeOffset(dateTime, TimeZoneInfo.Local.GetUtcOffset(dateTime)); 65 | } 66 | } 67 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Http/HttpFileCollection.cs: -------------------------------------------------------------------------------- 1 |  2 | using System.Collections.Generic; 3 | namespace Pure.NetCoreExtensions 4 | { 5 | public class HttpFileCollection : Dictionary 6 | { 7 | 8 | } 9 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Http/HttpPostedFile.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Http; 2 | using System.IO; 3 | namespace Pure.NetCoreExtensions 4 | { 5 | public class HttpPostedFile 6 | { 7 | IFormFile file; 8 | public HttpPostedFile(IFormFile file) 9 | { 10 | this.file = file; 11 | } 12 | // 摘要: 13 | // 获取上载文件的大小(以字节为单位)。 14 | // 15 | // 返回结果: 16 | // 文件长度(以字节为单位)。 17 | public long ContentLength => file.Length; 18 | // 19 | // 摘要: 20 | // 获取客户端发送的文件的 MIME 内容类型。 21 | // 22 | // 返回结果: 23 | // 上载文件的 MIME 内容类型。 24 | public string ContentType => file.ContentType; 25 | // 26 | // 摘要: 27 | // 获取客户端上的文件的完全限定名称。 28 | // 29 | // 返回结果: 30 | // 客户端的文件的名称,包含目录路径。 31 | public string FileName => file.FileName; 32 | // 33 | // 摘要: 34 | // 获取一个 System.IO.Stream 对象,该对象指向一个上载文件,以准备读取该文件的内容。 35 | // 36 | // 返回结果: 37 | // 指向文件的 System.IO.Stream。 38 | public Stream InputStream => file.OpenReadStream(); 39 | 40 | // 摘要: 41 | // 保存上载文件的内容。 42 | // 43 | // 参数: 44 | // filename: 45 | // 保存的文件的名称。 46 | // 47 | // 异常: 48 | // System.Web.HttpException: 49 | // System.Web.Configuration.HttpRuntimeSection 对象的 System.Web.Configuration.HttpRuntimeSection.RequireRootedSaveAsPath 50 | // 属性设置为 true,但 fileName 不是绝对路径。 51 | public void SaveAs(string fileName) 52 | { 53 | using (FileStream fs = System.IO.File.Create(fileName)) 54 | { 55 | file.CopyTo(fs); 56 | fs.Flush(); 57 | } 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Http/HttpServerUtility.cs: -------------------------------------------------------------------------------- 1 | namespace Pure.NetCoreExtensions 2 | { 3 | public class HttpServerUtility 4 | { 5 | public string HtmlDecode(string s) 6 | { 7 | return System.Net.WebUtility.HtmlDecode(s); 8 | } 9 | public string HtmlEncode(string s) 10 | { 11 | return System.Net.WebUtility.HtmlDecode(s); 12 | } 13 | public string UrlEncode(string s) 14 | { 15 | return System.Net.WebUtility.UrlEncode(s); 16 | } 17 | public string UrlDecode(string s) 18 | { 19 | return System.Net.WebUtility.UrlDecode(s); 20 | } 21 | public string MapPath(string path) 22 | { 23 | return GlobalHostEnvironment.WebRootPath + path.TrimStart('~', '/').Replace("/", "\\"); 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Http/HttpSessionState.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Http; 2 | using System.Collections.Generic; 3 | using System.Threading; 4 | using System.Threading.Tasks; 5 | namespace Pure.NetCoreExtensions 6 | { 7 | public class HttpSessionState : ISession 8 | { 9 | private Microsoft.AspNetCore.Http.HttpContext context; 10 | 11 | public HttpSessionState(Microsoft.AspNetCore.Http.HttpContext context) 12 | { 13 | this.context = context; 14 | } 15 | 16 | public string SessionID { get { return context.Session.Id; } } 17 | 18 | public bool IsAvailable => context.Session.IsAvailable; 19 | 20 | public string Id => context.Session.Id; 21 | 22 | public IEnumerable Keys => context.Session.Keys; 23 | 24 | public void Clear() 25 | { 26 | context.Session.Clear(); 27 | } 28 | 29 | public Task CommitAsync(CancellationToken cancellationToken = default(CancellationToken)) 30 | { 31 | return context.Session.CommitAsync(cancellationToken = default(CancellationToken)); 32 | } 33 | 34 | public Task LoadAsync(CancellationToken cancellationToken = default(CancellationToken)) 35 | { 36 | return context.Session.LoadAsync(cancellationToken = default(CancellationToken)); 37 | } 38 | 39 | public void Remove(string key) 40 | { 41 | context.Session.Remove(key); 42 | } 43 | 44 | public void Set(string key, byte[] value) 45 | { 46 | context.Session.Set(key, value); 47 | } 48 | 49 | public bool TryGetValue(string key, out byte[] value) 50 | { 51 | return context.Session.TryGetValue(key, out value); 52 | } 53 | } 54 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Identity/DefaultIdentityExtensions.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Identity; 2 | using Microsoft.Extensions.DependencyInjection; 3 | using System; 4 | 5 | namespace Pure.NetCoreExtensions 6 | { 7 | public static class DefaultIdentityUserExtensions 8 | { 9 | public static IServiceCollection AddDefaultUser(this IServiceCollection self) 10 | where TUser : IdentityUser 11 | where TKey : IEquatable 12 | { 13 | return self.AddScoped>(); 14 | } 15 | } 16 | 17 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Identity/DefaultIdentityUser.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Http; 2 | using Microsoft.AspNetCore.Identity; 3 | using Microsoft.Extensions.DependencyInjection; 4 | using System; 5 | using System.Linq; 6 | using System.Security.Claims; 7 | namespace Pure.NetCoreExtensions 8 | { 9 | public class DefaultIdentityUser : ClaimsPrincipal 10 | where TKey : IEquatable 11 | where TUser : IdentityUser 12 | { 13 | public Microsoft.AspNetCore.Http.HttpContext HttpContext { get; } 14 | 15 | public UserManager Manager { get; } 16 | 17 | private TUser _current = null; 18 | 19 | public bool IsSignedIn() 20 | { 21 | return HttpContext.User.Identity.IsAuthenticated; 22 | } 23 | 24 | public new TUser Current 25 | { 26 | get 27 | { 28 | if (_current == null) 29 | { 30 | if (!HttpContext.User.Identity.IsAuthenticated) return null; 31 | var um = HttpContext.RequestServices.GetRequiredService>(); 32 | var Type = typeof(TUser); 33 | var tmp = um.GetUserId(HttpContext.User); 34 | TKey uid; 35 | if (typeof(TKey) == typeof(Guid)) 36 | { 37 | uid = (dynamic)Guid.Parse(tmp); 38 | } 39 | else 40 | { 41 | uid = (TKey)Convert.ChangeType(tmp, typeof(TKey)); 42 | } 43 | try 44 | { 45 | _current = um.Users.Where(x => x.Id.Equals(uid)).Single(); 46 | return _current; 47 | } 48 | catch 49 | { 50 | return null; 51 | } 52 | } 53 | else 54 | { 55 | return _current; 56 | } 57 | } 58 | } 59 | 60 | public DefaultIdentityUser(IHttpContextAccessor accessor, UserManager userManager) 61 | { 62 | HttpContext = accessor.HttpContext; 63 | Manager = userManager; 64 | this.AddIdentity(new ClaimsIdentity(HttpContext.User.Identity)); 65 | this.AddIdentities(HttpContext.User.Identities); 66 | } 67 | } 68 | 69 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Identity/DefaultIdentityUserClaimsExtensions.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Identity; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Security.Claims; 6 | namespace Pure.NetCoreExtensions 7 | { 8 | public static class DefaultIdentityClaimsExtensions 9 | { 10 | public static bool AnyRoles(this DefaultIdentityUser self, string Roles) 11 | where TKey : IEquatable 12 | where TUser : IdentityUser 13 | { 14 | var roles = Roles.Split(','); 15 | for (var i = 0; i < roles.Count(); i++) 16 | roles[i] = roles[i].Trim(' '); 17 | foreach (var r in roles) 18 | if (self.IsInRole(r)) 19 | return true; 20 | return false; 21 | } 22 | 23 | public static bool AnyRolesOrClaims(this DefaultIdentityUser self, string Roles, List Claims) 24 | where TKey : IEquatable 25 | where TUser : IdentityUser 26 | { 27 | var roles = Roles.Split(','); 28 | for (var i = 0; i < roles.Count(); i++) 29 | roles[i] = roles[i].Trim(' '); 30 | foreach (var r in roles) 31 | if (self.IsInRole(r)) 32 | return true; 33 | foreach (var c in Claims) 34 | { 35 | if (self.HasClaim(c.Type, c.Value)) 36 | return true; 37 | } 38 | return false; 39 | } 40 | 41 | public static bool AnyRolesOrClaims(this DefaultIdentityUser self, string Roles, string Types, string Value) 42 | where TKey : IEquatable 43 | where TUser : IdentityUser 44 | { 45 | var tmp = Types.Split(','); 46 | var claims = new List(); 47 | foreach (var c in tmp) 48 | { 49 | claims.Add(new Claim(c.Trim(' '), Value)); 50 | } 51 | return self.AnyRolesOrClaims(Roles, claims); 52 | } 53 | } 54 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Log/FileLoggerProvider.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Extensions.Logging; 2 | 3 | namespace Pure.NetCoreExtensions 4 | { 5 | public class FileLoggerProvider : ILoggerProvider 6 | { 7 | 8 | public ILogger CreateLogger(string categoryName) 9 | { 10 | return new FileLogger(categoryName); 11 | } 12 | 13 | public void Dispose() 14 | { 15 | } 16 | } 17 | 18 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Log/GlobalLoggerFactory.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Extensions.Logging; 2 | 3 | namespace Pure.NetCoreExtensions 4 | { 5 | public class GlobalLoggerFactory 6 | { 7 | private static ILoggerFactory svr; 8 | 9 | public static ILoggerFactory Current => svr; 10 | internal static void Configure(ILoggerFactory _svr) 11 | { 12 | svr = _svr; 13 | } 14 | 15 | 16 | 17 | 18 | 19 | } 20 | 21 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Middleware/HtmlMinificationMiddleware/HtmlMinificationMiddlewareExtensions.cs: -------------------------------------------------------------------------------- 1 | namespace Pure.NetCoreExtensions.Middleware 2 | { 3 | using Microsoft.AspNetCore.Builder; 4 | 5 | public static class BuilderExtensions 6 | { 7 | public static IApplicationBuilder UseHTMLMinification(this IApplicationBuilder app) 8 | { 9 | return app.UseMiddleware(); 10 | } 11 | public static IApplicationBuilder UseHTMLMinification(this IApplicationBuilder app, 12 | string excludeFilter) 13 | { 14 | var options = new HtmlMinificationOptions() { ExcludeFilter = excludeFilter }; 15 | return app.UseMiddleware(options); 16 | } 17 | public static IApplicationBuilder UseHTMLMinification(this IApplicationBuilder app, 18 | HtmlMinificationOptions minificationOptions) 19 | { 20 | return app.UseMiddleware(minificationOptions); 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Middleware/HtmlMinificationMiddleware/HtmlMinificationOptions.cs: -------------------------------------------------------------------------------- 1 | namespace Pure.NetCoreExtensions.Middleware 2 | { 3 | public class HtmlMinificationOptions 4 | { 5 | public string ExcludeFilter { get; set; } 6 | } 7 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Middleware/HtmlMinificationMiddleware/HtmlMinificationPipeline.cs: -------------------------------------------------------------------------------- 1 | namespace Pure.NetCoreExtensions.Middleware 2 | { 3 | using Microsoft.AspNetCore.Builder; 4 | public class HtmlMinificationPipeline 5 | { 6 | public void Configure(IApplicationBuilder applicationBuilder) 7 | { 8 | applicationBuilder.UseHTMLMinification(); 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Middleware/HtmlMinificationMiddleware/使用说明.txt: -------------------------------------------------------------------------------- 1 | # HTML Minification middleware for ASP.NET Core 2 | 3 | Minification refers to the process of removing unnecessary or redundant data without affecting how the resource is processed by the browser - e.g. code comments and formatting, removing unused code, using shorter variable and function names, and so on. This repository contains source code of an ASP.NET Core middleware which helps to minify HTML. 4 | 5 | How to use HTML Minification middleware for ASP.NET Core 6 | -------------------------------- 7 | * Include HtmlMinification Middleware middleware in the project.json file. 8 | ```Xml 9 | 10 | 11 | 12 | 13 | ``` 14 | * Modify the startup.cs - configure to enable HTML minification. 15 | ```Javascript 16 | public void Configure(IApplicationBuilder app, IHostingEnvironment env) 17 | { 18 | if (env.IsDevelopment()) 19 | { 20 | app.UseDeveloperExceptionPage(); 21 | } 22 | else 23 | { 24 | app.UseExceptionHandler("/Error"); 25 | } 26 | 27 | app.UseHTMLMinification(); 28 | app.UseStaticFiles(); 29 | 30 | app.UseMvc(routes => 31 | { 32 | routes.MapRoute( 33 | name: "default", 34 | template: "{controller}/{action=Index}/{id?}"); 35 | }); 36 | } 37 | ``` 38 | * Done. Now you can browse the URL. 39 | 40 | ### Excluding URLs from minification. 41 | 42 | You can exclude certain pages from minification by using the exclude filter option. 43 | 44 | ```Javascript 45 | app.UseHTMLMinification("(w*)Page*"); 46 | ``` 47 | 48 | ### For ASP.NET MVC Core 1.1+ 49 | 50 | In ASP.NET Core MVC 1.1 onwards, you can use middlewares as Filters, so instead of using the Minification options, you can use `MiddlewareFilter` attribute, either in Controller or in specific action methods. 51 | 52 | ```Javascript 53 | [MiddlewareFilter(typeof(HtmlMinificationPipeline))] 54 | public class HomeController : Controller 55 | { 56 | } 57 | ``` 58 | 59 | or 60 | 61 | ```Javascript 62 | public class HomeController : Controller 63 | { 64 | [MiddlewareFilter(typeof(HtmlMinificationPipeline))] 65 | public IActionResult Index() 66 | { 67 | return View(); 68 | } 69 | } 70 | ``` 71 | 72 | Appveyor Build Status : [![Build status](https://ci.appveyor.com/api/projects/status/pyltm6fuc9qo8xkq?svg=true)](https://ci.appveyor.com/project/anuraj/htmlminificationmiddleware) -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Middleware/HttpExceptionMiddleware.cs: -------------------------------------------------------------------------------- 1 | namespace Pure.NetCoreExtensions.Middleware 2 | { 3 | using Microsoft.AspNetCore.Http; 4 | using Microsoft.AspNetCore.Http.Features; 5 | using Microsoft.Extensions.DependencyInjection; 6 | using Microsoft.Extensions.Logging; 7 | using System.Threading.Tasks; 8 | 9 | internal class HttpExceptionMiddleware 10 | { 11 | private readonly RequestDelegate next; 12 | 13 | public HttpExceptionMiddleware(RequestDelegate next) => this.next = next; 14 | 15 | public async Task Invoke(HttpContext context) 16 | { 17 | try 18 | { 19 | await this.next.Invoke(context).ConfigureAwait(false); 20 | } 21 | catch (HttpException httpException) 22 | { 23 | var factory = context.RequestServices.GetRequiredService(); 24 | var logger = factory.CreateLogger(); 25 | logger.LogInformation( 26 | "Executing HttpExceptionMiddleware, setting HTTP status code {0}.", 27 | httpException.StatusCode); 28 | 29 | context.Response.StatusCode = httpException.StatusCode; 30 | if (httpException != null) 31 | { 32 | var responseFeature = context.Features.Get(); 33 | responseFeature.ReasonPhrase = httpException.Message; 34 | } 35 | } 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Middleware/InternalServerErrorOnExceptionMiddleware.cs: -------------------------------------------------------------------------------- 1 | namespace Pure.NetCoreExtensions.Middleware 2 | { 3 | using System.Threading.Tasks; 4 | using Microsoft.AspNetCore.Http; 5 | using Microsoft.Extensions.DependencyInjection; 6 | using Microsoft.Extensions.Logging; 7 | 8 | internal class InternalServerErrorOnExceptionMiddleware 9 | { 10 | private readonly RequestDelegate next; 11 | 12 | public InternalServerErrorOnExceptionMiddleware(RequestDelegate next) => this.next = next; 13 | 14 | public async Task Invoke(HttpContext context) 15 | { 16 | try 17 | { 18 | await this.next.Invoke(context).ConfigureAwait(false); 19 | } 20 | catch 21 | { 22 | var factory = context.RequestServices.GetRequiredService(); 23 | var logger = factory.CreateLogger(); 24 | logger.LogInformation( 25 | "Executing InternalServerErrorOnExceptionMiddleware, setting HTTP status code {0}.", 26 | StatusCodes.Status500InternalServerError); 27 | 28 | context.Response.StatusCode = StatusCodes.Status500InternalServerError; 29 | } 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Middleware/NoServerHttpHeaderMiddleware.cs: -------------------------------------------------------------------------------- 1 | namespace Pure.NetCoreExtensions.Middleware 2 | { 3 | using System.Threading.Tasks; 4 | using Microsoft.AspNetCore.Http; 5 | 6 | internal class NoServerHttpHeaderMiddleware 7 | { 8 | private const string ServerHttpHeaderName = "Server"; 9 | 10 | private readonly RequestDelegate next; 11 | 12 | public NoServerHttpHeaderMiddleware(RequestDelegate next) => this.next = next; 13 | 14 | public Task Invoke(HttpContext context) 15 | { 16 | context.Response.Headers.Remove(ServerHttpHeaderName); 17 | return this.next.Invoke(context); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Mvc/BaseController.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Hosting; 2 | using Microsoft.AspNetCore.Mvc; 3 | using Microsoft.AspNetCore.Mvc.Filters; 4 | using Microsoft.Extensions.Configuration; 5 | using Microsoft.Extensions.DependencyInjection; 6 | using System.Threading.Tasks; 7 | 8 | namespace Pure.NetCoreExtensions 9 | { 10 | public abstract partial class BaseController : Controller 11 | { 12 | public string AppRootPath { get { return HttpContext.RequestServices?.GetService().ContentRootPath; } } 13 | 14 | public string WebRootPath { get { return HttpContext.RequestServices?.GetService().WebRootPath; } } 15 | 16 | public IConfiguration Configuration { get { return HttpContext.RequestServices?.GetService(); } } 17 | 18 | public DefaultCookies Cookies { get { return HttpContext.RequestServices?.GetService< DefaultCookies>(); } } 19 | 20 | 21 | public override void OnActionExecuting(ActionExecutingContext context) 22 | { 23 | Prepare(); 24 | base.OnActionExecuting(context); 25 | } 26 | 27 | public override Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) 28 | { 29 | Prepare(); 30 | return base.OnActionExecutionAsync(context, next); 31 | } 32 | 33 | public virtual void Prepare() 34 | { 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Mvc/BaseControllerWithIdentity.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Identity; 2 | using Microsoft.Extensions.DependencyInjection; 3 | using System; 4 | 5 | namespace Pure.NetCoreExtensions 6 | { 7 | public abstract class BaseController< TUser, TKey> : BaseController 8 | where TKey : IEquatable 9 | where TUser : IdentityUser 10 | { 11 | public UserManager UserManager { get { return HttpContext.RequestServices?.GetService>(); } } 12 | 13 | public SignInManager SignInManager { get { return HttpContext.RequestServices?.GetService>(); } } 14 | 15 | public RoleManager RoleManager { get { return HttpContext.RequestServices?.GetService>(); } } 16 | 17 | public new DefaultIdentityUser User { get { return HttpContext.RequestServices?.GetService>(); } } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Mvc/ContentType.cs: -------------------------------------------------------------------------------- 1 | namespace Pure.NetCoreExtensions 2 | { 3 | /// 4 | /// A list of internet media types, which are a standard identifier used on the Internet to indicate the type of 5 | /// data that a file contains. Web browsers use them to determine how to display, output or handle files and search 6 | /// engines use them to classify data files on the web. 7 | /// 8 | public static class ContentType 9 | { 10 | /// Atom feeds. 11 | public const string Atom = "application/atom+xml"; 12 | 13 | /// HTML; Defined in RFC 2854. 14 | public const string Html = "text/html"; 15 | 16 | /// Form URL Encoded. 17 | public const string FormUrlEncoded = "application/x-www-form-urlencoded"; 18 | 19 | /// GIF image; Defined in RFC 2045 and RFC 2046. 20 | public const string Gif = "image/gif"; 21 | 22 | /// JPEG JFIF image; Defined in RFC 2045 and RFC 2046. 23 | public const string Jpg = "image/jpeg"; 24 | 25 | /// JavaScript Object Notation JSON; Defined in RFC 4627. 26 | public const string Json = "application/json"; 27 | 28 | /// Web App Manifest. 29 | public const string Manifest = "application/manifest+json"; 30 | 31 | /// Multi-part form daata; Defined in RFC 2388. 32 | public const string MultipartFormData = "multipart/form-data"; 33 | 34 | /// Portable Network Graphics; Registered,[8] Defined in RFC 2083. 35 | public const string Png = "image/png"; 36 | 37 | /// Rich Site Summary; Defined by Harvard Law. 38 | public const string Rss = "application/rss+xml"; 39 | 40 | /// Textual data; Defined in RFC 2046 and RFC 3676. 41 | public const string Text = "text/plain"; 42 | 43 | /// Extensible Markup Language; Defined in RFC 3023 44 | public const string Xml = "application/xml"; 45 | 46 | /// Compressed ZIP. 47 | public const string Zip = "application/zip"; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Mvc/Filters/HttpGlobalExceptionFilter.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purestackorg/Pure.NETCoreExtensions/60b6a3cce5eea0778f3593ed69ec41d4b5ea7ef2/Pure.NetCoreExtensions/Mvc/Filters/HttpGlobalExceptionFilter.cs -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Mvc/Filters/InjectAttribute.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Microsoft.AspNetCore.Mvc.ModelBinding; 3 | 4 | namespace Pure.NetCoreExtensions 5 | { 6 | [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Property, AllowMultiple = false, Inherited = true)] 7 | public class InjectAttribute : Attribute, IBindingSourceMetadata 8 | { 9 | public BindingSource BindingSource => BindingSource.Services; 10 | } 11 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Mvc/Filters/NoCacheAttribute.cs: -------------------------------------------------------------------------------- 1 | namespace Pure.NetCoreExtensions 2 | { 3 | using System; 4 | using Microsoft.AspNetCore.Mvc; 5 | 6 | /// 7 | /// Represents an attribute that is used to mark an action method whose output will not be cached. 8 | /// 9 | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)] 10 | public class NoCacheAttribute : ResponseCacheAttribute 11 | { 12 | /// 13 | /// Initializes a new instance of the class. 14 | /// 15 | public NoCacheAttribute() => this.NoStore = true; // Duration = 0 and VaryByParam = "*" by default. 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Mvc/Filters/NoLowercaseQueryStringAttribute.cs: -------------------------------------------------------------------------------- 1 | namespace Pure.NetCoreExtensions 2 | { 3 | using System; 4 | using Microsoft.AspNetCore.Mvc.Filters; 5 | 6 | /// 7 | /// Ensures that a HTTP request URL can contain query string parameters with both upper-case and lower-case 8 | /// characters. 9 | /// 10 | [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, Inherited = true, AllowMultiple = false)] 11 | public class NoLowercaseQueryStringAttribute : Attribute, IFilterMetadata 12 | { 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Mvc/Filters/NoTrailingSlashAttribute.cs: -------------------------------------------------------------------------------- 1 | namespace Pure.NetCoreExtensions 2 | { 3 | using System; 4 | using Microsoft.AspNetCore.Mvc; 5 | using Microsoft.AspNetCore.Mvc.Filters; 6 | 7 | /// 8 | /// Requires that a HTTP request does not contain a trailing slash. If it does, return a 404 Not Found. This is 9 | /// useful if you are dynamically generating something which acts like it's a file on the web server. 10 | /// E.g. /Robots.txt/ should not have a trailing slash and should be /Robots.txt. Note, that we also don't care if 11 | /// it is upper-case or lower-case in this instance. 12 | /// 13 | [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, Inherited = true, AllowMultiple = false)] 14 | public class NoTrailingSlashAttribute : Attribute, IResourceFilter 15 | { 16 | private const char SlashCharacter = '/'; 17 | 18 | /// 19 | /// Executes the resource filter. Called after execution of the remainder of the pipeline. 20 | /// 21 | /// The . 22 | public void OnResourceExecuted(ResourceExecutedContext context) 23 | { 24 | } 25 | 26 | /// 27 | /// Executes the resource filter. Called before execution of the remainder of the pipeline. Determines whether 28 | /// a request contains a trailing slash and, if it does, calls the 29 | /// method. 30 | /// 31 | /// The . 32 | public void OnResourceExecuting(ResourceExecutingContext context) 33 | { 34 | var path = context.HttpContext.Request.Path; 35 | if (path.HasValue) 36 | { 37 | if (path.Value[path.Value.Length - 1] == SlashCharacter) 38 | { 39 | this.HandleTrailingSlashRequest(context); 40 | } 41 | } 42 | } 43 | 44 | /// 45 | /// Handles HTTP requests that have a trailing slash but are not meant to. 46 | /// 47 | /// The . 48 | protected virtual void HandleTrailingSlashRequest(ResourceExecutingContext context) => 49 | context.Result = new NotFoundResult(); 50 | } 51 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Mvc/Filters/OperationCancelledExceptionFilter.cs: -------------------------------------------------------------------------------- 1 | namespace Pure.NetCoreExtensions 2 | { 3 | using System; 4 | using Microsoft.AspNetCore.Mvc; 5 | using Microsoft.AspNetCore.Mvc.Filters; 6 | using Microsoft.Extensions.Logging; 7 | 8 | /// 9 | /// Return a 499 Client Closed Request HTTP status code when the client application closes the TCP connection. 10 | /// 11 | public class OperationCancelledExceptionFilter : ExceptionFilterAttribute 12 | { 13 | private const int ClientClosedRequestHttpStatusCode = 499; 14 | private readonly ILogger logger; 15 | 16 | /// 17 | /// Initializes a new instance of the class. 18 | /// 19 | /// The logger. 20 | public OperationCancelledExceptionFilter(ILogger logger) => 21 | this.logger = logger; 22 | 23 | /// 24 | /// Handle an exception when it occurs. 25 | /// 26 | /// The exception context. 27 | public override void OnException(ExceptionContext context) 28 | { 29 | if (context.Exception is OperationCanceledException) 30 | { 31 | this.logger.LogInformation("Request was cancelled"); 32 | context.ExceptionHandled = true; 33 | context.Result = new StatusCodeResult(ClientClosedRequestHttpStatusCode); 34 | } 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Mvc/Filters/Prompt.cs: -------------------------------------------------------------------------------- 1 | namespace Pure.NetCoreExtensions 2 | { 3 | public class Prompt 4 | { 5 | public string Title { get; set; } 6 | public int StatusCode { get; set; } = 200; 7 | public string Details { get; set; } 8 | public string RedirectUrl { get; set; } 9 | public string RedirectText { get; set; } 10 | public string Requires { get; set; } 11 | public dynamic Hint { get; set; } 12 | public bool HideBack { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Mvc/Filters/ValidateModelStateAttribute.cs: -------------------------------------------------------------------------------- 1 | namespace Pure.NetCoreExtensions 2 | { 3 | using System.Linq; 4 | using Microsoft.AspNetCore.Mvc; 5 | using Microsoft.AspNetCore.Mvc.Filters; 6 | 7 | /// 8 | /// Validates the action's arguments and model state. If any of the arguments are null or the model state is 9 | /// invalid, returns a 400 Bad Request result. 10 | /// 11 | /// 12 | public class ValidateModelStateAttribute : ActionFilterAttribute 13 | { 14 | /// 15 | /// Called when the action is executing. 16 | /// 17 | /// The action context. 18 | public override void OnActionExecuting(ActionExecutingContext actionContext) 19 | { 20 | if (actionContext.ActionArguments.Any(x => x.Value == null)) 21 | { 22 | actionContext.Result = new BadRequestObjectResult("Arguments cannot be null."); 23 | } 24 | else if (!actionContext.ModelState.IsValid) 25 | { 26 | actionContext.Result = new BadRequestObjectResult(actionContext.ModelState); 27 | } 28 | 29 | base.OnActionExecuting(actionContext); 30 | 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Mvc/RestController.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Http; 2 | using Microsoft.AspNetCore.Mvc; 3 | 4 | namespace Pure.NetCoreExtensions 5 | { 6 | public abstract class RestController : Controller 7 | { 8 | [NonAction] 9 | public ActionResult Conflict(string type, string title = null) 10 | { 11 | return GeneralResponse(StatusCodes.Status409Conflict, type, title); 12 | } 13 | 14 | [NonAction] 15 | public ActionResult Gone(string type, string title = null) 16 | { 17 | return GeneralResponse(StatusCodes.Status410Gone, type, title); 18 | } 19 | 20 | [NonAction] 21 | public ActionResult NotFound(string type, string title = null) 22 | { 23 | return GeneralResponse(StatusCodes.Status404NotFound, type, title); 24 | } 25 | 26 | [NonAction] 27 | public ActionResult Unauthorized(string type, string title = null) 28 | { 29 | return GeneralResponse(StatusCodes.Status401Unauthorized, type, title); 30 | } 31 | 32 | [NonAction] 33 | public ActionResult Forbid(string type, string title = null) 34 | { 35 | return GeneralResponse(StatusCodes.Status403Forbidden, type, title); 36 | } 37 | 38 | private ActionResult GeneralResponse(int statusCode, string type, string title) 39 | { 40 | var problemDetails = new ProblemDetails 41 | { 42 | Status = statusCode, 43 | Title = title, 44 | Type = type, 45 | Instance = HttpContext.Request.Path 46 | }; 47 | 48 | return new ObjectResult(problemDetails) 49 | { 50 | StatusCode = statusCode 51 | }; 52 | } 53 | } 54 | 55 | public class ProblemDetails 56 | { 57 | public int Status {get;set;} 58 | public string Title { get;set; } 59 | public string Type { get;set; } 60 | public PathString Instance { get;set; } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Mvc/UrlHelperExtensions.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc; 2 | using System; 3 | 4 | namespace Pure.NetCoreExtensions 5 | { 6 | /// 7 | /// extension methods. 8 | /// 9 | public static class UrlHelperExtensions 10 | { 11 | /// 12 | /// Generates a fully qualified URL to an action method by using the specified action name, controller name and 13 | /// route values. 14 | /// 15 | /// The URL helper. 16 | /// The name of the action method. 17 | /// The name of the controller. 18 | /// The route values. 19 | /// The absolute URL. 20 | public static string GenerateActionUrl( 21 | this IUrlHelper url, 22 | string actionName, 23 | string controllerName, 24 | object routeValues = null) => 25 | url.Action(actionName, controllerName, routeValues, url.ActionContext.HttpContext.Request.Scheme); 26 | 27 | /// 28 | /// Generates a fully qualified URL to the specified content by using the specified content path. Converts a 29 | /// virtual (relative) path to an application absolute path. 30 | /// 31 | /// The URL helper. 32 | /// The content path. 33 | /// The absolute URL. 34 | public static string GenerateContentUrl( 35 | this IUrlHelper url, 36 | string contentPath) 37 | { 38 | var request = url.ActionContext.HttpContext.Request; 39 | return new Uri(new Uri(request.Scheme + "://" + request.Host.Value), url.Content(contentPath)).ToString(); 40 | } 41 | 42 | /// 43 | /// Generates a fully qualified URL to the specified route by using the route name and route values. 44 | /// 45 | /// The URL helper. 46 | /// Name of the route. 47 | /// The route values. 48 | /// The absolute URL. 49 | public static string GenerateRouteUrl( 50 | this IUrlHelper url, 51 | string routeName, 52 | object routeValues = null) => 53 | url.RouteUrl(routeName, routeValues, url.ActionContext.HttpContext.Request.Scheme); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/Pure.NetCoreExtensions.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netstandard2.0 5 | Pure.NetCoreExtensions 6 | Pure.NetCoreExtensions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/RateLimit/Core/Extensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace Pure.NetCoreExtensions.RateLimit 7 | { 8 | public static class Extensions 9 | { 10 | public static bool ContainsIgnoreCase(this string source, string value, StringComparison stringComparison = StringComparison.CurrentCultureIgnoreCase) 11 | { 12 | return source != null && value != null && source.IndexOf(value, stringComparison) >= 0; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/RateLimit/Middleware/MiddlewareExtensions.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Builder; 2 | 3 | namespace Pure.NetCoreExtensions.RateLimit 4 | { 5 | public static class MiddlewareExtensions 6 | { 7 | public static IApplicationBuilder UseIpRateLimiting(this IApplicationBuilder builder) 8 | { 9 | return builder.UseMiddleware(); 10 | } 11 | 12 | public static IApplicationBuilder UseClientRateLimiting(this IApplicationBuilder builder) 13 | { 14 | return builder.UseMiddleware(); 15 | } 16 | 17 | 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/RateLimit/Models/ClientRateLimitOptions.cs: -------------------------------------------------------------------------------- 1 | namespace Pure.NetCoreExtensions.RateLimit 2 | { 3 | public class ClientRateLimitOptions : RateLimitCoreOptions 4 | { 5 | /// 6 | /// Gets or sets the HTTP header that holds the client identifier, by default is X-ClientId 7 | /// 8 | public string ClientIdHeader { get; set; } = "X-ClientId"; 9 | 10 | /// 11 | /// Gets or sets the policy prefix, used to compose the client policy cache key 12 | /// 13 | public string ClientPolicyPrefix { get; set; } = "crlp"; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/RateLimit/Models/ClientRateLimitPolicies.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Pure.NetCoreExtensions.RateLimit 4 | { 5 | public class ClientRateLimitPolicies 6 | { 7 | public List ClientRules { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/RateLimit/Models/ClientRateLimitPolicy.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Pure.NetCoreExtensions.RateLimit 4 | { 5 | public class ClientRateLimitPolicy 6 | { 7 | public string ClientId { get; set; } 8 | public List Rules { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/RateLimit/Models/ClientRequestIdentity.cs: -------------------------------------------------------------------------------- 1 | namespace Pure.NetCoreExtensions.RateLimit 2 | { 3 | /// 4 | /// Stores the client IP, ID, endpoint and verb 5 | /// 6 | public class ClientRequestIdentity 7 | { 8 | public string ClientIp { get; set; } 9 | 10 | public string ClientId { get; set; } 11 | 12 | public string Path { get; set; } 13 | 14 | public string HttpVerb { get; set; } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/RateLimit/Models/IpRateLimitOptions.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Pure.NetCoreExtensions.RateLimit 4 | { 5 | public class IpRateLimitOptions : RateLimitCoreOptions 6 | { 7 | /// 8 | /// Gets or sets the HTTP header of the real ip header injected by reverse proxy, by default is X-Real-IP 9 | /// 10 | public string RealIpHeader { get; set; } = "X-Real-IP"; 11 | 12 | /// 13 | /// Gets or sets the HTTP header that holds the client identifier, by default is X-ClientId 14 | /// 15 | public string ClientIdHeader { get; set; } = "X-ClientId"; 16 | 17 | /// 18 | /// Gets or sets the policy prefix, used to compose the client policy cache key 19 | /// 20 | public string IpPolicyPrefix { get; set; } = "ippp"; 21 | 22 | public List IpWhitelist { get; set; } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/RateLimit/Models/IpRateLimitPolicies.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Pure.NetCoreExtensions.RateLimit 4 | { 5 | public class IpRateLimitPolicies 6 | { 7 | public List IpRules { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/RateLimit/Models/IpRateLimitPolicy.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Pure.NetCoreExtensions.RateLimit 4 | { 5 | public class IpRateLimitPolicy 6 | { 7 | public string Ip { get; set; } 8 | public List Rules { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/RateLimit/Models/RateLimitCoreOptions.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Pure.NetCoreExtensions.RateLimit 4 | { 5 | public class RateLimitCoreOptions 6 | { 7 | public List GeneralRules { get; set; } 8 | 9 | public List EndpointWhitelist { get; set; } 10 | 11 | public List ClientWhitelist { get; set; } 12 | 13 | /// 14 | /// Gets or sets the HTTP Status code returned when rate limiting occurs, by default value is set to 429 (Too Many Requests) 15 | /// 16 | public int HttpStatusCode { get; set; } = 429; 17 | 18 | /// 19 | /// Gets or sets a value that will be used as a formatter for the QuotaExceeded response message. 20 | /// If none specified the default will be: 21 | /// API calls quota exceeded! maximum admitted {0} per {1} 22 | /// 23 | public string QuotaExceededMessage { get; set; } 24 | 25 | /// 26 | /// Gets or sets the counter prefix, used to compose the rate limit counter cache key 27 | /// 28 | public string RateLimitCounterPrefix { get; set; } = "crlc"; 29 | 30 | /// 31 | /// Gets or sets a value indicating whether all requests, including the rejected ones, should be stacked in this order: day, hour, min, sec 32 | /// 33 | public bool StackBlockedRequests { get; set; } 34 | 35 | /// 36 | /// Enables endpoint rate limiting based URL path and HTTP verb 37 | /// 38 | public bool EnableEndpointRateLimiting { get; set; } 39 | 40 | /// 41 | /// Disables X-Rate-Limit and Rety-After headers 42 | /// 43 | public bool DisableRateLimitHeaders { get; set; } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/RateLimit/Models/RateLimitCounter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Pure.NetCoreExtensions.RateLimit 4 | { 5 | /// 6 | /// Stores the initial access time and the numbers of calls made from that point 7 | /// 8 | public struct RateLimitCounter 9 | { 10 | public DateTime Timestamp { get; set; } 11 | 12 | public long TotalRequests { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/RateLimit/Models/RateLimitHeaders.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Http; 2 | 3 | namespace Pure.NetCoreExtensions.RateLimit 4 | { 5 | public class RateLimitHeaders 6 | { 7 | public Microsoft.AspNetCore.Http.HttpContext Context { get; set; } 8 | 9 | public string Limit { get; set; } 10 | 11 | public string Remaining { get; set; } 12 | 13 | public string Reset { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/RateLimit/Models/RateLimitRule.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Pure.NetCoreExtensions.RateLimit 4 | { 5 | public class RateLimitRule 6 | { 7 | /// 8 | /// HTTP verb and path 9 | /// 10 | /// 11 | /// get:/api/values 12 | /// *:/api/values 13 | /// * 14 | /// 15 | public string Endpoint { get; set; } 16 | 17 | /// 18 | /// Rate limit period as in 1s, 1m, 1h 19 | /// 20 | public string Period { get; set; } 21 | 22 | public TimeSpan? PeriodTimespan { get; set; } 23 | 24 | /// 25 | /// Maximum number of requests that a client can make in a defined period 26 | /// 27 | public long Limit { get; set; } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/RateLimit/Net/IIPAddressParser.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | using System.Net; 4 | 5 | namespace Pure.NetCoreExtensions.RateLimit 6 | { 7 | public interface IIpAddressParser 8 | { 9 | bool ContainsIp(string ipRule, string clientIp); 10 | 11 | bool ContainsIp(List ipRules, string clientIp); 12 | 13 | bool ContainsIp(List ipRules, string clientIp, out string rule); 14 | 15 | IPAddress GetClientIp(Microsoft.AspNetCore.Http.HttpContext context); 16 | 17 | IPAddress ParseIp(string ipAddress); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/RateLimit/Net/RemoteIpParser.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Net; 3 | using Microsoft.AspNetCore.Http; 4 | 5 | namespace Pure.NetCoreExtensions.RateLimit 6 | { 7 | public class RemoteIpParser : IIpAddressParser 8 | { 9 | 10 | 11 | public bool ContainsIp(string ipRule, string clientIp) 12 | { 13 | return IpAddressUtil.ContainsIp(ipRule, clientIp); 14 | } 15 | 16 | public bool ContainsIp(List ipRules, string clientIp) 17 | { 18 | return IpAddressUtil.ContainsIp(ipRules, clientIp); 19 | } 20 | 21 | public bool ContainsIp(List ipRules, string clientIp, out string rule) 22 | { 23 | return IpAddressUtil.ContainsIp(ipRules, clientIp, out rule); 24 | } 25 | 26 | public virtual IPAddress GetClientIp(Microsoft.AspNetCore.Http.HttpContext context) 27 | { 28 | return context.Connection.RemoteIpAddress; 29 | 30 | } 31 | 32 | public IPAddress ParseIp(string ipAddress) 33 | { 34 | return IpAddressUtil.ParseIp(ipAddress); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/RateLimit/Net/ReversProxyIpParser.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using System.Net; 4 | using Microsoft.AspNetCore.Http; 5 | 6 | namespace Pure.NetCoreExtensions.RateLimit 7 | { 8 | public class ReversProxyIpParser : RemoteIpParser 9 | { 10 | private readonly string _realIpHeader; 11 | 12 | public ReversProxyIpParser(string realIpHeader) 13 | { 14 | _realIpHeader = realIpHeader; 15 | } 16 | 17 | public override IPAddress GetClientIp(Microsoft.AspNetCore.Http.HttpContext context) 18 | { 19 | if (context.Request.Headers.Keys.Contains(_realIpHeader, StringComparer.CurrentCultureIgnoreCase)) 20 | { 21 | return ParseIp(context.Request.Headers[_realIpHeader].Last()); 22 | } 23 | 24 | return base.GetClientIp(context); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/RateLimit/Store/DistributedCacheClientPolicyStore.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Extensions.Caching.Distributed; 2 | using Microsoft.Extensions.Options; 3 | using Newtonsoft.Json; 4 | 5 | namespace Pure.NetCoreExtensions.RateLimit 6 | { 7 | public class DistributedCacheClientPolicyStore : IClientPolicyStore 8 | { 9 | private readonly IDistributedCache _memoryCache; 10 | 11 | public DistributedCacheClientPolicyStore(IDistributedCache memoryCache, 12 | IOptions options = null, 13 | IOptions policies = null) 14 | { 15 | _memoryCache = memoryCache; 16 | 17 | //save client rules defined in appsettings in distributed cache on startup 18 | if (options != null && options.Value != null && policies != null && policies.Value != null && policies.Value.ClientRules != null) 19 | { 20 | foreach (var rule in policies.Value.ClientRules) 21 | { 22 | Set($"{options.Value.ClientPolicyPrefix}_{rule.ClientId}", new ClientRateLimitPolicy { ClientId = rule.ClientId, Rules = rule.Rules }); 23 | } 24 | } 25 | } 26 | 27 | public void Set(string id, ClientRateLimitPolicy policy) 28 | { 29 | _memoryCache.SetString(id, JsonConvert.SerializeObject(policy)); 30 | } 31 | 32 | public bool Exists(string id) 33 | { 34 | var stored = _memoryCache.GetString(id); 35 | return !string.IsNullOrEmpty(stored); 36 | } 37 | 38 | public ClientRateLimitPolicy Get(string id) 39 | { 40 | var stored = _memoryCache.GetString(id); 41 | if (!string.IsNullOrEmpty(stored)) 42 | { 43 | return JsonConvert.DeserializeObject(stored); 44 | } 45 | return null; 46 | } 47 | 48 | public void Remove(string id) 49 | { 50 | _memoryCache.Remove(id); 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/RateLimit/Store/DistributedCacheIpPolicyStore.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Extensions.Caching.Distributed; 2 | using Microsoft.Extensions.Options; 3 | using Newtonsoft.Json; 4 | 5 | namespace Pure.NetCoreExtensions.RateLimit 6 | { 7 | public class DistributedCacheIpPolicyStore : IIpPolicyStore 8 | { 9 | private readonly IDistributedCache _memoryCache; 10 | 11 | public DistributedCacheIpPolicyStore(IDistributedCache memoryCache, 12 | IOptions options = null, 13 | IOptions policies = null) 14 | { 15 | _memoryCache = memoryCache; 16 | 17 | //save ip rules defined in appsettings in distributed cache on startup 18 | if (options != null && options.Value != null && policies != null && policies.Value != null && policies.Value.IpRules != null) 19 | { 20 | Set($"{options.Value.IpPolicyPrefix}", policies.Value); 21 | 22 | } 23 | } 24 | 25 | public void Set(string id, IpRateLimitPolicies policy) 26 | { 27 | _memoryCache.SetString(id, JsonConvert.SerializeObject(policy)); 28 | } 29 | 30 | public bool Exists(string id) 31 | { 32 | var stored = _memoryCache.GetString(id); 33 | return !string.IsNullOrEmpty(stored); 34 | } 35 | 36 | public IpRateLimitPolicies Get(string id) 37 | { 38 | var stored = _memoryCache.GetString(id); 39 | if (!string.IsNullOrEmpty(stored)) 40 | { 41 | return JsonConvert.DeserializeObject(stored); 42 | } 43 | return null; 44 | } 45 | 46 | public void Remove(string id) 47 | { 48 | _memoryCache.Remove(id); 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/RateLimit/Store/DistributedCacheRateLimitCounterStore.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Extensions.Caching.Distributed; 2 | using Newtonsoft.Json; 3 | using System; 4 | 5 | namespace Pure.NetCoreExtensions.RateLimit 6 | { 7 | public class DistributedCacheRateLimitCounterStore : IRateLimitCounterStore 8 | { 9 | private readonly IDistributedCache _memoryCache; 10 | 11 | public DistributedCacheRateLimitCounterStore(IDistributedCache memoryCache) 12 | { 13 | _memoryCache = memoryCache; 14 | } 15 | 16 | public void Set(string id, RateLimitCounter counter, TimeSpan expirationTime) 17 | { 18 | _memoryCache.SetString(id, JsonConvert.SerializeObject(counter), new DistributedCacheEntryOptions().SetAbsoluteExpiration(expirationTime)); 19 | } 20 | 21 | public bool Exists(string id) 22 | { 23 | var stored = _memoryCache.GetString(id); 24 | return !string.IsNullOrEmpty(stored); 25 | } 26 | 27 | public RateLimitCounter? Get(string id) 28 | { 29 | var stored = _memoryCache.GetString(id); 30 | if(!string.IsNullOrEmpty(stored)) 31 | { 32 | return JsonConvert.DeserializeObject(stored); 33 | } 34 | return null; 35 | } 36 | 37 | public void Remove(string id) 38 | { 39 | _memoryCache.Remove(id); 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/RateLimit/Store/IClientPolicyStore.cs: -------------------------------------------------------------------------------- 1 | namespace Pure.NetCoreExtensions.RateLimit 2 | { 3 | public interface IClientPolicyStore 4 | { 5 | bool Exists(string id); 6 | ClientRateLimitPolicy Get(string id); 7 | void Remove(string id); 8 | void Set(string id, ClientRateLimitPolicy policy); 9 | } 10 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/RateLimit/Store/IIpPolicyStore.cs: -------------------------------------------------------------------------------- 1 | namespace Pure.NetCoreExtensions.RateLimit 2 | { 3 | public interface IIpPolicyStore 4 | { 5 | bool Exists(string id); 6 | IpRateLimitPolicies Get(string id); 7 | void Remove(string id); 8 | void Set(string id, IpRateLimitPolicies policy); 9 | } 10 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/RateLimit/Store/IRateLimitCounterStore.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Pure.NetCoreExtensions.RateLimit 4 | { 5 | public interface IRateLimitCounterStore 6 | { 7 | bool Exists(string id); 8 | RateLimitCounter? Get(string id); 9 | void Remove(string id); 10 | void Set(string id, RateLimitCounter counter, TimeSpan expirationTime); 11 | } 12 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/RateLimit/Store/MemoryCacheClientPolicyStore.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Extensions.Caching.Memory; 2 | using Microsoft.Extensions.Options; 3 | using System; 4 | using System.Collections.Generic; 5 | 6 | namespace Pure.NetCoreExtensions.RateLimit 7 | { 8 | public class MemoryCacheClientPolicyStore: IClientPolicyStore 9 | { 10 | private readonly IMemoryCache _memoryCache; 11 | 12 | public MemoryCacheClientPolicyStore(IMemoryCache memoryCache, 13 | IOptions options = null, 14 | IOptions policies = null) 15 | { 16 | _memoryCache = memoryCache; 17 | 18 | //save client rules defined in appsettings in cache on startup 19 | if(options != null && options.Value != null && policies != null && policies.Value != null && policies.Value.ClientRules != null) 20 | { 21 | foreach (var rule in policies.Value.ClientRules) 22 | { 23 | Set($"{options.Value.ClientPolicyPrefix}_{rule.ClientId}", new ClientRateLimitPolicy { ClientId = rule.ClientId, Rules = rule.Rules }); 24 | } 25 | } 26 | } 27 | 28 | public void Set(string id, ClientRateLimitPolicy policy) 29 | { 30 | _memoryCache.Set(id, policy); 31 | } 32 | 33 | public bool Exists(string id) 34 | { 35 | ClientRateLimitPolicy stored; 36 | return _memoryCache.TryGetValue(id, out stored); 37 | } 38 | 39 | public ClientRateLimitPolicy Get(string id) 40 | { 41 | ClientRateLimitPolicy stored; 42 | if (_memoryCache.TryGetValue(id, out stored)) 43 | { 44 | return stored; 45 | } 46 | 47 | return null; 48 | } 49 | 50 | public void Remove(string id) 51 | { 52 | _memoryCache.Remove(id); 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/RateLimit/Store/MemoryCacheIpPolicyStore.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Extensions.Caching.Memory; 2 | using Microsoft.Extensions.Options; 3 | using System; 4 | using System.Collections.Generic; 5 | 6 | namespace Pure.NetCoreExtensions.RateLimit 7 | { 8 | public class MemoryCacheIpPolicyStore : IIpPolicyStore 9 | { 10 | private readonly IMemoryCache _memoryCache; 11 | 12 | public MemoryCacheIpPolicyStore(IMemoryCache memoryCache, 13 | IOptions options = null, 14 | IOptions policies = null) 15 | { 16 | _memoryCache = memoryCache; 17 | 18 | //save ip rules defined in appsettings in cache on startup 19 | if (options != null && options.Value != null && policies != null && policies.Value != null && policies.Value.IpRules != null) 20 | { 21 | Set($"{options.Value.IpPolicyPrefix}", policies.Value); 22 | 23 | } 24 | } 25 | 26 | public void Set(string id, IpRateLimitPolicies policy) 27 | { 28 | _memoryCache.Set(id, policy); 29 | } 30 | 31 | public bool Exists(string id) 32 | { 33 | IpRateLimitPolicies stored; 34 | return _memoryCache.TryGetValue(id, out stored); 35 | } 36 | 37 | public IpRateLimitPolicies Get(string id) 38 | { 39 | IpRateLimitPolicies stored; 40 | if (_memoryCache.TryGetValue(id, out stored)) 41 | { 42 | return stored; 43 | } 44 | 45 | return null; 46 | } 47 | 48 | public void Remove(string id) 49 | { 50 | _memoryCache.Remove(id); 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/RateLimit/Store/MemoryCacheRateLimitCounterStore.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Extensions.Caching.Memory; 2 | using System; 3 | 4 | namespace Pure.NetCoreExtensions.RateLimit 5 | { 6 | public class MemoryCacheRateLimitCounterStore: IRateLimitCounterStore 7 | { 8 | private readonly IMemoryCache _memoryCache; 9 | 10 | public MemoryCacheRateLimitCounterStore(IMemoryCache memoryCache) 11 | { 12 | _memoryCache = memoryCache; 13 | } 14 | 15 | public void Set(string id, RateLimitCounter counter, TimeSpan expirationTime) 16 | { 17 | _memoryCache.Set(id, counter, new MemoryCacheEntryOptions().SetAbsoluteExpiration(expirationTime)); 18 | } 19 | 20 | public bool Exists(string id) 21 | { 22 | RateLimitCounter stored; 23 | return _memoryCache.TryGetValue(id, out stored); 24 | } 25 | 26 | public RateLimitCounter? Get(string id) 27 | { 28 | RateLimitCounter stored; 29 | if (_memoryCache.TryGetValue(id, out stored)) 30 | { 31 | return stored; 32 | } 33 | 34 | return null; 35 | } 36 | 37 | public void Remove(string id) 38 | { 39 | _memoryCache.Remove(id); 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/RateLimit/TokenBucketLimiting/ILimitingService.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Pure.NetCoreExtensions.RateLimit 4 | { 5 | public interface ILimitingService : IDisposable 6 | { 7 | /// 8 | /// 申请流量处理 9 | /// 10 | /// true:获取成功,false:获取失败 11 | bool Request(); 12 | 13 | } 14 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/RateLimit/TokenBucketLimiting/LimitingFactory.cs: -------------------------------------------------------------------------------- 1 | namespace Pure.NetCoreExtensions.RateLimit 2 | { 3 | public class LimitingFactory 4 | { 5 | /// 6 | /// 创建限流服务对象 7 | /// 8 | /// 限流模型 9 | /// 最大QPS 10 | /// 最大可用票据数 11 | public static ILimitingService Build(LimitingType limitingType = LimitingType.TokenBucket, int maxQPS = 100, int limitSize = 100) 12 | { 13 | switch (limitingType) 14 | { 15 | case LimitingType.TokenBucket: 16 | default: 17 | return new TokenBucketLimitingService(maxQPS, limitSize); 18 | case LimitingType.LeakageBucket: 19 | return new LeakageBucketLimitingService(maxQPS, limitSize); 20 | } 21 | } 22 | } 23 | 24 | 25 | 26 | /// 27 | /// 限流模式 28 | /// 29 | public enum LimitingType 30 | { 31 | TokenBucket,//令牌桶模式 32 | LeakageBucket//漏桶模式 33 | } 34 | 35 | 36 | 37 | public class LimitedQueue : System.Collections.Generic.Queue 38 | { 39 | private int limit = 0; 40 | public const string QueueFulled = "TTP-StreamLimiting-1001"; 41 | 42 | public int Limit 43 | { 44 | get { return limit; } 45 | set { limit = value; } 46 | } 47 | 48 | public LimitedQueue() 49 | : this(0) 50 | { } 51 | 52 | public LimitedQueue(int limit) 53 | : base(limit) 54 | { 55 | this.Limit = limit; 56 | } 57 | 58 | public new bool Enqueue(T item) 59 | { 60 | if (limit > 0 && this.Count >= this.Limit) 61 | { 62 | return false; 63 | } 64 | base.Enqueue(item); 65 | return true; 66 | } 67 | } 68 | } -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/SmtpEmail/Attachment.cs: -------------------------------------------------------------------------------- 1 | namespace Pure.NetCoreExtensions 2 | { 3 | public class Attachment 4 | { 5 | public string FileName { get; set; } 6 | 7 | public byte[] File { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/SmtpEmail/EmailSender.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using System.Threading.Tasks; 3 | 4 | namespace Pure.NetCoreExtensions 5 | { 6 | public abstract class EmailSender : IEmailSender 7 | { 8 | public Task SendEmailAsync(string to, string subject, string message, params Attachment[] Attachments) 9 | { 10 | return PostEmailAsync(null, to, null, null, subject, message, Attachments); 11 | } 12 | 13 | public Task PostEmailAsync(string name, string to, string subject, string message, params Attachment[] Attachments) 14 | { 15 | return PostEmailAsync(name, to, null, null, subject, message, Attachments); 16 | } 17 | 18 | public Task SendEmailAsync(string to, string cc, string bcc, string subject, string message, params Attachment[] Attachments) 19 | { 20 | return PostEmailAsync(null, to, cc, bcc, subject, message, Attachments); 21 | } 22 | 23 | public Task SendEmailAsync(string[] to, string[] cc, string[] bcc, string subject, string message, params Attachment[] Attachments) 24 | { 25 | return PostEmailAsync(null, to, cc, bcc, subject, message, Attachments); 26 | } 27 | 28 | public Task PostEmailAsync(string name, string to, string cc, string bcc, string subject, string message, params Attachment[] Attachments) 29 | { 30 | var _to = new string[0]; 31 | var _cc = new string[0]; 32 | var _bcc = new string[0]; 33 | if (!string.IsNullOrEmpty(to)) 34 | _to = to.Split(',').Select(x => x.Trim()).ToArray(); 35 | if (!string.IsNullOrEmpty(cc)) 36 | _cc = cc.Split(',').Select(x => x.Trim()).ToArray(); 37 | if (!string.IsNullOrEmpty(bcc)) 38 | _bcc = bcc.Split(',').Select(x => x.Trim()).ToArray(); 39 | return PostEmailAsync(name, _to, _cc, _bcc, subject, message, Attachments); 40 | } 41 | 42 | public abstract Task PostEmailAsync(string name, string[] to, string[] cc, string[] bcc, string subject, string message, params Attachment[] Attachments); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /Pure.NetCoreExtensions/SmtpEmail/HtmlHelper.cs: -------------------------------------------------------------------------------- 1 | using System.Text.RegularExpressions; 2 | 3 | namespace Pure.NetCoreExtensions 4 | { 5 | public static class HtmlHelper 6 | { 7 | public static string NoHTML(string Htmlstring) 8 | { 9 | //删除脚本 10 | Htmlstring = Regex.Replace(Htmlstring, @"]*?>.*?", "", 11 | RegexOptions.IgnoreCase); 12 | //删除HTML 13 | Htmlstring = Regex.Replace(Htmlstring, @"<(.[^>]*)>", "", 14 | RegexOptions.IgnoreCase); 15 | Htmlstring = Regex.Replace(Htmlstring, @"([\r\n])[\s]+", "", 16 | RegexOptions.IgnoreCase); 17 | Htmlstring = Regex.Replace(Htmlstring, @"-->", "", RegexOptions.IgnoreCase); 18 | Htmlstring = Regex.Replace(Htmlstring, @"