Skip to content
代码片段 群组 项目
未验证 提交 3bdea024 编辑于 作者: William Godbe's avatar William Godbe 提交者: GitHub
浏览文件

Merge pull request #44474 from wtgodbe/wtgodbe/31Merge101122

[3.1] Merge internal commits
No related branches found
No related tags found
无相关合并请求
显示
738 个添加502 个删除
......@@ -4,13 +4,17 @@
<clear />
<!--Begin: Package sources managed by Dependency Flow automation. Do not edit the sources below.-->
<!-- Begin: Package sources from dotnet-efcore -->
<add key="darc-int-dotnet-efcore-a29a7e5" value="https://pkgs.dev.azure.com/dnceng/_packaging/darc-int-dotnet-efcore-a29a7e57/nuget/v3/index.json" />
<!-- End: Package sources from dotnet-efcore -->
<!-- Begin: Package sources from dotnet-extensions -->
<add key="darc-int-dotnet-extensions-c62ee3d" value="https://pkgs.dev.azure.com/dnceng/_packaging/darc-int-dotnet-extensions-c62ee3d0/nuget/v3/index.json" />
<!-- Begin: Package sources from dotnet-razor-tooling -->
<add key="darc-int-dotnet-razor-tooling-ff510da" value="https://pkgs.dev.azure.com/dnceng/_packaging/darc-int-dotnet-razor-tooling-ff510daf/nuget/v3/index.json" />
<!-- End: Package sources from dotnet-razor-tooling -->
<!-- Begin: Package sources from dotnet-corefx -->
<!-- End: Package sources from dotnet-corefx -->
<!-- Begin: Package sources from dotnet-core-setup -->
<add key="darc-int-dotnet-core-setup-6ea7191" value="https://pkgs.dev.azure.com/dnceng/_packaging/darc-int-dotnet-core-setup-6ea71919/nuget/v3/index.json" />
<!-- End: Package sources from dotnet-core-setup -->
<!-- End: Package sources from dotnet-extensions -->
<!--End: Package sources managed by Dependency Flow automation. Do not edit the sources above.-->
......@@ -23,11 +27,15 @@
<clear />
<!--Begin: Package sources managed by Dependency Flow automation. Do not edit the sources below.-->
<!-- Begin: Package sources from dotnet-core-setup -->
<add key="darc-int-dotnet-core-setup-6ea7191" value="true" />
<!-- Begin: Package sources from dotnet-efcore -->
<add key="darc-int-dotnet-efcore-a29a7e5" value="true" />
<!-- End: Package sources from dotnet-efcore -->
<!-- Begin: Package sources from dotnet-extensions -->
<add key="darc-int-dotnet-extensions-c62ee3d" value="true" />
<!-- End: Package sources from dotnet-extensions -->
<!-- Begin: Package sources from dotnet-razor-tooling -->
<add key="darc-int-dotnet-razor-tooling-ff510da" value="true" />
<!-- End: Package sources from dotnet-razor-tooling -->
<!-- End: Package sources from dotnet-core-setup -->
<!-- Begin: Package sources from dotnet-corefx -->
......
此差异已折叠。
......@@ -4,87 +4,87 @@ This file contains a list of all the packages and their versions which were rele
Update this list when preparing for a new patch.
-->
<Baseline Version="3.1.29">
<Baseline Version="3.1.30">
<Package Id="AspNetCoreRuntime.3.0.x64" Version="3.0.3" />
<Package Id="AspNetCoreRuntime.3.0.x86" Version="3.0.3" />
<Package Id="dotnet-sql-cache" Version="3.1.29" />
<Package Id="dotnet-sql-cache" Version="3.1.30" />
<Package Id="Microsoft.Authentication.WebAssembly.Msal" Version="3.2.1" />
<Package Id="Microsoft.AspNetCore.ApiAuthorization.IdentityServer" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.App.Runtime.win-x64" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Authentication.AzureAD.UI" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Authentication.AzureADB2C.UI" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Authentication.Certificate" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Authentication.Facebook" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Authentication.Google" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Authentication.JwtBearer" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Authentication.MicrosoftAccount" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Authentication.Negotiate" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Authentication.Twitter" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Authentication.WsFederation" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Authorization" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.AzureAppServices.HostingStartup" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.AzureAppServices.SiteExtension" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.AzureAppServicesIntegration" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Components" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Components.Analyzers" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Components.Authorization" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Components.Forms" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Components.Web" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.ApiAuthorization.IdentityServer" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.App.Runtime.win-x64" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Authentication.AzureAD.UI" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Authentication.AzureADB2C.UI" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Authentication.Certificate" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Authentication.Facebook" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Authentication.Google" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Authentication.JwtBearer" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Authentication.MicrosoftAccount" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Authentication.Negotiate" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Authentication.Twitter" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Authentication.WsFederation" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Authorization" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.AzureAppServices.HostingStartup" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.AzureAppServices.SiteExtension" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.AzureAppServicesIntegration" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Components" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Components.Analyzers" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Components.Authorization" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Components.Forms" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Components.Web" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Components.WebAssembly" Version="3.2.1" />
<Package Id="Microsoft.AspNetCore.Components.WebAssembly.Build" Version="3.2.1" />
<Package Id="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="3.2.1" />
<Package Id="Microsoft.AspNetCore.Components.WebAssembly.Authentication" Version="3.2.1" />
<Package Id="Microsoft.AspNetCore.Components.WebAssembly.HttpHandler" Version="3.2.1" />
<Package Id="Microsoft.JSInterop.WebAssembly" Version="3.2.1" />
<Package Id="Microsoft.AspNetCore.ConcurrencyLimiter" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Connections.Abstractions" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Cryptography.Internal" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Cryptography.KeyDerivation" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.DataProtection" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.DataProtection.Abstractions" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.ConcurrencyLimiter" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Connections.Abstractions" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Cryptography.Internal" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Cryptography.KeyDerivation" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.DataProtection" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.DataProtection.Abstractions" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.DataProtection.AzureKeyVault" Version="3.1.24" />
<Package Id="Microsoft.AspNetCore.DataProtection.AzureStorage" Version="3.1.24" />
<Package Id="Microsoft.AspNetCore.DataProtection.EntityFrameworkCore" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.DataProtection.Extensions" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.HeaderPropagation" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Hosting.WindowsServices" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Http.Connections.Client" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Http.Connections.Common" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Http.Features" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Identity.Specification.Tests" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Identity.UI" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.JsonPatch" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Metadata" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.MiddlewareAnalysis" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Mvc.Testing" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.NodeServices" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Owin" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.SignalR.Client" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.SignalR.Client.Core" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.SignalR.Common" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.SignalR.Protocols.Json" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.SignalR.Specification.Tests" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.SignalR.StackExchangeRedis" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.SpaServices" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.SpaServices.Extensions" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.TestHost" Version="3.1.29" />
<Package Id="Microsoft.dotnet-openapi" Version="3.1.29" />
<Package Id="Microsoft.DotNet.Web.Client.ItemTemplates" Version="3.1.29" />
<Package Id="Microsoft.DotNet.Web.ItemTemplates" Version="3.1.29" />
<Package Id="Microsoft.DotNet.Web.ProjectTemplates.3.1" Version="3.1.29" />
<Package Id="Microsoft.DotNet.Web.Spa.ProjectTemplates.3.1" Version="3.1.29" />
<Package Id="Microsoft.Extensions.ApiDescription.Client" Version="3.1.29" />
<Package Id="Microsoft.Extensions.ApiDescription.Server" Version="3.1.29" />
<Package Id="Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore" Version="3.1.29" />
<Package Id="Microsoft.Extensions.Identity.Core" Version="3.1.29" />
<Package Id="Microsoft.Extensions.Identity.Stores" Version="3.1.29" />
<Package Id="Microsoft.AspNetCore.DataProtection.EntityFrameworkCore" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.DataProtection.Extensions" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.HeaderPropagation" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Hosting.WindowsServices" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Http.Connections.Client" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Http.Connections.Common" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Http.Features" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Identity.Specification.Tests" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Identity.UI" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.JsonPatch" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Metadata" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.MiddlewareAnalysis" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Mvc.Testing" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.NodeServices" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Owin" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.SignalR.Client" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.SignalR.Client.Core" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.SignalR.Common" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.SignalR.Protocols.Json" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.SignalR.Specification.Tests" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.SignalR.StackExchangeRedis" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.SpaServices" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.SpaServices.Extensions" Version="3.1.30" />
<Package Id="Microsoft.AspNetCore.TestHost" Version="3.1.30" />
<Package Id="Microsoft.dotnet-openapi" Version="3.1.30" />
<Package Id="Microsoft.DotNet.Web.Client.ItemTemplates" Version="3.1.30" />
<Package Id="Microsoft.DotNet.Web.ItemTemplates" Version="3.1.30" />
<Package Id="Microsoft.DotNet.Web.ProjectTemplates.3.1" Version="3.1.30" />
<Package Id="Microsoft.DotNet.Web.Spa.ProjectTemplates.3.1" Version="3.1.30" />
<Package Id="Microsoft.Extensions.ApiDescription.Client" Version="3.1.30" />
<Package Id="Microsoft.Extensions.ApiDescription.Server" Version="3.1.30" />
<Package Id="Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore" Version="3.1.30" />
<Package Id="Microsoft.Extensions.Identity.Core" Version="3.1.30" />
<Package Id="Microsoft.Extensions.Identity.Stores" Version="3.1.30" />
</Baseline>
\ No newline at end of file
此差异已折叠。
......@@ -10,7 +10,7 @@
<AspNetCoreMinorVersion>1</AspNetCoreMinorVersion>
<AspNetCorePatchVersion>31</AspNetCorePatchVersion>
<!-- This property should be 'false' between branding & code-merging, 'true' the rest of the time -->
<ValidateBaseline>false</ValidateBaseline>
<ValidateBaseline>true</ValidateBaseline>
<PreReleasePreviewNumber>0</PreReleasePreviewNumber>
<ComponentsWebAssemblyMajorVersion>3</ComponentsWebAssemblyMajorVersion>
<ComponentsWebAssemblyMinorVersion>2</ComponentsWebAssemblyMinorVersion>
......@@ -69,9 +69,9 @@
<MicrosoftNetCompilersToolsetPackageVersion>3.4.1-beta4-20127-10</MicrosoftNetCompilersToolsetPackageVersion>
<!-- Packages from dotnet/core-setup -->
<MicrosoftExtensionsDependencyModelPackageVersion>3.1.25</MicrosoftExtensionsDependencyModelPackageVersion>
<MicrosoftNETCoreAppInternalPackageVersion>3.1.29-servicing.22417.6</MicrosoftNETCoreAppInternalPackageVersion>
<MicrosoftNETCoreAppInternalPackageVersion>3.1.30-servicing.22476.9</MicrosoftNETCoreAppInternalPackageVersion>
<MicrosoftNETCoreAppRefPackageVersion>3.1.0</MicrosoftNETCoreAppRefPackageVersion>
<MicrosoftNETCoreAppRuntimewinx64PackageVersion>3.1.29</MicrosoftNETCoreAppRuntimewinx64PackageVersion>
<MicrosoftNETCoreAppRuntimewinx64PackageVersion>3.1.30</MicrosoftNETCoreAppRuntimewinx64PackageVersion>
<NETStandardLibraryRefPackageVersion>2.1.0</NETStandardLibraryRefPackageVersion>
<!-- Packages from dotnet/corefx -->
<MicrosoftBclAsyncInterfacesPackageVersion>1.1.1</MicrosoftBclAsyncInterfacesPackageVersion>
......@@ -102,79 +102,79 @@
<!-- Packages from aspnet/Blazor -->
<MicrosoftAspNetCoreComponentsWebAssemblyRuntimePackageVersion>3.2.0</MicrosoftAspNetCoreComponentsWebAssemblyRuntimePackageVersion>
<!-- Packages from aspnet/Extensions -->
<InternalAspNetCoreAnalyzersPackageVersion>3.1.29-servicing.22417.4</InternalAspNetCoreAnalyzersPackageVersion>
<MicrosoftAspNetCoreAnalyzerTestingPackageVersion>3.1.29-servicing.22417.4</MicrosoftAspNetCoreAnalyzerTestingPackageVersion>
<MicrosoftAspNetCoreBenchmarkRunnerSourcesPackageVersion>3.1.29-servicing.22417.4</MicrosoftAspNetCoreBenchmarkRunnerSourcesPackageVersion>
<MicrosoftAspNetCoreTestingPackageVersion>3.1.29-servicing.22417.4</MicrosoftAspNetCoreTestingPackageVersion>
<MicrosoftExtensionsActivatorUtilitiesSourcesPackageVersion>3.1.29-servicing.22417.4</MicrosoftExtensionsActivatorUtilitiesSourcesPackageVersion>
<MicrosoftExtensionsCachingAbstractionsPackageVersion>3.1.29</MicrosoftExtensionsCachingAbstractionsPackageVersion>
<MicrosoftExtensionsCachingMemoryPackageVersion>3.1.29</MicrosoftExtensionsCachingMemoryPackageVersion>
<MicrosoftExtensionsCachingSqlServerPackageVersion>3.1.29</MicrosoftExtensionsCachingSqlServerPackageVersion>
<MicrosoftExtensionsCachingStackExchangeRedisPackageVersion>3.1.29</MicrosoftExtensionsCachingStackExchangeRedisPackageVersion>
<MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion>3.1.29-servicing.22417.4</MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion>
<MicrosoftExtensionsConfigurationAbstractionsPackageVersion>3.1.29</MicrosoftExtensionsConfigurationAbstractionsPackageVersion>
<MicrosoftExtensionsConfigurationAzureKeyVaultPackageVersion>3.1.29-servicing.22417.4</MicrosoftExtensionsConfigurationAzureKeyVaultPackageVersion>
<MicrosoftExtensionsConfigurationBinderPackageVersion>3.1.29</MicrosoftExtensionsConfigurationBinderPackageVersion>
<MicrosoftExtensionsConfigurationCommandLinePackageVersion>3.1.29</MicrosoftExtensionsConfigurationCommandLinePackageVersion>
<MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>3.1.29</MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>
<MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>3.1.29</MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>
<MicrosoftExtensionsConfigurationIniPackageVersion>3.1.29</MicrosoftExtensionsConfigurationIniPackageVersion>
<MicrosoftExtensionsConfigurationJsonPackageVersion>3.1.29</MicrosoftExtensionsConfigurationJsonPackageVersion>
<MicrosoftExtensionsConfigurationKeyPerFilePackageVersion>3.1.29</MicrosoftExtensionsConfigurationKeyPerFilePackageVersion>
<MicrosoftExtensionsConfigurationPackageVersion>3.1.29</MicrosoftExtensionsConfigurationPackageVersion>
<MicrosoftExtensionsConfigurationUserSecretsPackageVersion>3.1.29</MicrosoftExtensionsConfigurationUserSecretsPackageVersion>
<MicrosoftExtensionsConfigurationXmlPackageVersion>3.1.29</MicrosoftExtensionsConfigurationXmlPackageVersion>
<MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>3.1.29</MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>
<MicrosoftExtensionsDependencyInjectionPackageVersion>3.1.29</MicrosoftExtensionsDependencyInjectionPackageVersion>
<MicrosoftExtensionsDiagnosticAdapterPackageVersion>3.1.29</MicrosoftExtensionsDiagnosticAdapterPackageVersion>
<MicrosoftExtensionsDiagnosticsHealthChecksAbstractionsPackageVersion>3.1.29</MicrosoftExtensionsDiagnosticsHealthChecksAbstractionsPackageVersion>
<MicrosoftExtensionsDiagnosticsHealthChecksPackageVersion>3.1.29</MicrosoftExtensionsDiagnosticsHealthChecksPackageVersion>
<MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>3.1.29</MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>
<MicrosoftExtensionsFileProvidersCompositePackageVersion>3.1.29</MicrosoftExtensionsFileProvidersCompositePackageVersion>
<MicrosoftExtensionsFileProvidersEmbeddedPackageVersion>3.1.29</MicrosoftExtensionsFileProvidersEmbeddedPackageVersion>
<MicrosoftExtensionsFileProvidersPhysicalPackageVersion>3.1.29</MicrosoftExtensionsFileProvidersPhysicalPackageVersion>
<MicrosoftExtensionsFileSystemGlobbingPackageVersion>3.1.29</MicrosoftExtensionsFileSystemGlobbingPackageVersion>
<MicrosoftExtensionsHashCodeCombinerSourcesPackageVersion>3.1.29-servicing.22417.4</MicrosoftExtensionsHashCodeCombinerSourcesPackageVersion>
<MicrosoftExtensionsHostingAbstractionsPackageVersion>3.1.29</MicrosoftExtensionsHostingAbstractionsPackageVersion>
<MicrosoftExtensionsHostingPackageVersion>3.1.29</MicrosoftExtensionsHostingPackageVersion>
<MicrosoftExtensionsHostFactoryResolverSourcesPackageVersion>3.1.29-servicing.22417.4</MicrosoftExtensionsHostFactoryResolverSourcesPackageVersion>
<MicrosoftExtensionsHttpPackageVersion>3.1.29</MicrosoftExtensionsHttpPackageVersion>
<MicrosoftExtensionsLocalizationAbstractionsPackageVersion>3.1.29</MicrosoftExtensionsLocalizationAbstractionsPackageVersion>
<MicrosoftExtensionsLocalizationPackageVersion>3.1.29</MicrosoftExtensionsLocalizationPackageVersion>
<MicrosoftExtensionsLoggingAbstractionsPackageVersion>3.1.29</MicrosoftExtensionsLoggingAbstractionsPackageVersion>
<MicrosoftExtensionsLoggingAzureAppServicesPackageVersion>3.1.29</MicrosoftExtensionsLoggingAzureAppServicesPackageVersion>
<MicrosoftExtensionsLoggingConfigurationPackageVersion>3.1.29</MicrosoftExtensionsLoggingConfigurationPackageVersion>
<MicrosoftExtensionsLoggingConsolePackageVersion>3.1.29</MicrosoftExtensionsLoggingConsolePackageVersion>
<MicrosoftExtensionsLoggingDebugPackageVersion>3.1.29</MicrosoftExtensionsLoggingDebugPackageVersion>
<MicrosoftExtensionsLoggingEventSourcePackageVersion>3.1.29</MicrosoftExtensionsLoggingEventSourcePackageVersion>
<MicrosoftExtensionsLoggingEventLogPackageVersion>3.1.29</MicrosoftExtensionsLoggingEventLogPackageVersion>
<MicrosoftExtensionsLoggingPackageVersion>3.1.29</MicrosoftExtensionsLoggingPackageVersion>
<MicrosoftExtensionsLoggingTestingPackageVersion>3.1.29-servicing.22417.4</MicrosoftExtensionsLoggingTestingPackageVersion>
<MicrosoftExtensionsLoggingTraceSourcePackageVersion>3.1.29</MicrosoftExtensionsLoggingTraceSourcePackageVersion>
<MicrosoftExtensionsObjectPoolPackageVersion>3.1.29</MicrosoftExtensionsObjectPoolPackageVersion>
<MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>3.1.29</MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>
<MicrosoftExtensionsOptionsDataAnnotationsPackageVersion>3.1.29</MicrosoftExtensionsOptionsDataAnnotationsPackageVersion>
<MicrosoftExtensionsOptionsPackageVersion>3.1.29</MicrosoftExtensionsOptionsPackageVersion>
<MicrosoftExtensionsParameterDefaultValueSourcesPackageVersion>3.1.29-servicing.22417.4</MicrosoftExtensionsParameterDefaultValueSourcesPackageVersion>
<MicrosoftExtensionsPrimitivesPackageVersion>3.1.29</MicrosoftExtensionsPrimitivesPackageVersion>
<MicrosoftExtensionsTypeNameHelperSourcesPackageVersion>3.1.29-servicing.22417.4</MicrosoftExtensionsTypeNameHelperSourcesPackageVersion>
<MicrosoftExtensionsValueStopwatchSourcesPackageVersion>3.1.29-servicing.22417.4</MicrosoftExtensionsValueStopwatchSourcesPackageVersion>
<MicrosoftExtensionsWebEncodersPackageVersion>3.1.29</MicrosoftExtensionsWebEncodersPackageVersion>
<InternalAspNetCoreAnalyzersPackageVersion>3.1.30-servicing.22476.2</InternalAspNetCoreAnalyzersPackageVersion>
<MicrosoftAspNetCoreAnalyzerTestingPackageVersion>3.1.30-servicing.22476.2</MicrosoftAspNetCoreAnalyzerTestingPackageVersion>
<MicrosoftAspNetCoreBenchmarkRunnerSourcesPackageVersion>3.1.30-servicing.22476.2</MicrosoftAspNetCoreBenchmarkRunnerSourcesPackageVersion>
<MicrosoftAspNetCoreTestingPackageVersion>3.1.30-servicing.22476.2</MicrosoftAspNetCoreTestingPackageVersion>
<MicrosoftExtensionsActivatorUtilitiesSourcesPackageVersion>3.1.30-servicing.22476.2</MicrosoftExtensionsActivatorUtilitiesSourcesPackageVersion>
<MicrosoftExtensionsCachingAbstractionsPackageVersion>3.1.30</MicrosoftExtensionsCachingAbstractionsPackageVersion>
<MicrosoftExtensionsCachingMemoryPackageVersion>3.1.30</MicrosoftExtensionsCachingMemoryPackageVersion>
<MicrosoftExtensionsCachingSqlServerPackageVersion>3.1.30</MicrosoftExtensionsCachingSqlServerPackageVersion>
<MicrosoftExtensionsCachingStackExchangeRedisPackageVersion>3.1.30</MicrosoftExtensionsCachingStackExchangeRedisPackageVersion>
<MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion>3.1.30-servicing.22476.2</MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion>
<MicrosoftExtensionsConfigurationAbstractionsPackageVersion>3.1.30</MicrosoftExtensionsConfigurationAbstractionsPackageVersion>
<MicrosoftExtensionsConfigurationAzureKeyVaultPackageVersion>3.1.30-servicing.22476.2</MicrosoftExtensionsConfigurationAzureKeyVaultPackageVersion>
<MicrosoftExtensionsConfigurationBinderPackageVersion>3.1.30</MicrosoftExtensionsConfigurationBinderPackageVersion>
<MicrosoftExtensionsConfigurationCommandLinePackageVersion>3.1.30</MicrosoftExtensionsConfigurationCommandLinePackageVersion>
<MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>3.1.30</MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>
<MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>3.1.30</MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>
<MicrosoftExtensionsConfigurationIniPackageVersion>3.1.30</MicrosoftExtensionsConfigurationIniPackageVersion>
<MicrosoftExtensionsConfigurationJsonPackageVersion>3.1.30</MicrosoftExtensionsConfigurationJsonPackageVersion>
<MicrosoftExtensionsConfigurationKeyPerFilePackageVersion>3.1.30</MicrosoftExtensionsConfigurationKeyPerFilePackageVersion>
<MicrosoftExtensionsConfigurationPackageVersion>3.1.30</MicrosoftExtensionsConfigurationPackageVersion>
<MicrosoftExtensionsConfigurationUserSecretsPackageVersion>3.1.30</MicrosoftExtensionsConfigurationUserSecretsPackageVersion>
<MicrosoftExtensionsConfigurationXmlPackageVersion>3.1.30</MicrosoftExtensionsConfigurationXmlPackageVersion>
<MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>3.1.30</MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>
<MicrosoftExtensionsDependencyInjectionPackageVersion>3.1.30</MicrosoftExtensionsDependencyInjectionPackageVersion>
<MicrosoftExtensionsDiagnosticAdapterPackageVersion>3.1.30</MicrosoftExtensionsDiagnosticAdapterPackageVersion>
<MicrosoftExtensionsDiagnosticsHealthChecksAbstractionsPackageVersion>3.1.30</MicrosoftExtensionsDiagnosticsHealthChecksAbstractionsPackageVersion>
<MicrosoftExtensionsDiagnosticsHealthChecksPackageVersion>3.1.30</MicrosoftExtensionsDiagnosticsHealthChecksPackageVersion>
<MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>3.1.30</MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>
<MicrosoftExtensionsFileProvidersCompositePackageVersion>3.1.30</MicrosoftExtensionsFileProvidersCompositePackageVersion>
<MicrosoftExtensionsFileProvidersEmbeddedPackageVersion>3.1.30</MicrosoftExtensionsFileProvidersEmbeddedPackageVersion>
<MicrosoftExtensionsFileProvidersPhysicalPackageVersion>3.1.30</MicrosoftExtensionsFileProvidersPhysicalPackageVersion>
<MicrosoftExtensionsFileSystemGlobbingPackageVersion>3.1.30</MicrosoftExtensionsFileSystemGlobbingPackageVersion>
<MicrosoftExtensionsHashCodeCombinerSourcesPackageVersion>3.1.30-servicing.22476.2</MicrosoftExtensionsHashCodeCombinerSourcesPackageVersion>
<MicrosoftExtensionsHostingAbstractionsPackageVersion>3.1.30</MicrosoftExtensionsHostingAbstractionsPackageVersion>
<MicrosoftExtensionsHostingPackageVersion>3.1.30</MicrosoftExtensionsHostingPackageVersion>
<MicrosoftExtensionsHostFactoryResolverSourcesPackageVersion>3.1.30-servicing.22476.2</MicrosoftExtensionsHostFactoryResolverSourcesPackageVersion>
<MicrosoftExtensionsHttpPackageVersion>3.1.30</MicrosoftExtensionsHttpPackageVersion>
<MicrosoftExtensionsLocalizationAbstractionsPackageVersion>3.1.30</MicrosoftExtensionsLocalizationAbstractionsPackageVersion>
<MicrosoftExtensionsLocalizationPackageVersion>3.1.30</MicrosoftExtensionsLocalizationPackageVersion>
<MicrosoftExtensionsLoggingAbstractionsPackageVersion>3.1.30</MicrosoftExtensionsLoggingAbstractionsPackageVersion>
<MicrosoftExtensionsLoggingAzureAppServicesPackageVersion>3.1.30</MicrosoftExtensionsLoggingAzureAppServicesPackageVersion>
<MicrosoftExtensionsLoggingConfigurationPackageVersion>3.1.30</MicrosoftExtensionsLoggingConfigurationPackageVersion>
<MicrosoftExtensionsLoggingConsolePackageVersion>3.1.30</MicrosoftExtensionsLoggingConsolePackageVersion>
<MicrosoftExtensionsLoggingDebugPackageVersion>3.1.30</MicrosoftExtensionsLoggingDebugPackageVersion>
<MicrosoftExtensionsLoggingEventSourcePackageVersion>3.1.30</MicrosoftExtensionsLoggingEventSourcePackageVersion>
<MicrosoftExtensionsLoggingEventLogPackageVersion>3.1.30</MicrosoftExtensionsLoggingEventLogPackageVersion>
<MicrosoftExtensionsLoggingPackageVersion>3.1.30</MicrosoftExtensionsLoggingPackageVersion>
<MicrosoftExtensionsLoggingTestingPackageVersion>3.1.30-servicing.22476.2</MicrosoftExtensionsLoggingTestingPackageVersion>
<MicrosoftExtensionsLoggingTraceSourcePackageVersion>3.1.30</MicrosoftExtensionsLoggingTraceSourcePackageVersion>
<MicrosoftExtensionsObjectPoolPackageVersion>3.1.30</MicrosoftExtensionsObjectPoolPackageVersion>
<MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>3.1.30</MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>
<MicrosoftExtensionsOptionsDataAnnotationsPackageVersion>3.1.30</MicrosoftExtensionsOptionsDataAnnotationsPackageVersion>
<MicrosoftExtensionsOptionsPackageVersion>3.1.30</MicrosoftExtensionsOptionsPackageVersion>
<MicrosoftExtensionsParameterDefaultValueSourcesPackageVersion>3.1.30-servicing.22476.2</MicrosoftExtensionsParameterDefaultValueSourcesPackageVersion>
<MicrosoftExtensionsPrimitivesPackageVersion>3.1.30</MicrosoftExtensionsPrimitivesPackageVersion>
<MicrosoftExtensionsTypeNameHelperSourcesPackageVersion>3.1.30-servicing.22476.2</MicrosoftExtensionsTypeNameHelperSourcesPackageVersion>
<MicrosoftExtensionsValueStopwatchSourcesPackageVersion>3.1.30-servicing.22476.2</MicrosoftExtensionsValueStopwatchSourcesPackageVersion>
<MicrosoftExtensionsWebEncodersPackageVersion>3.1.30</MicrosoftExtensionsWebEncodersPackageVersion>
<MicrosoftInternalExtensionsRefsPackageVersion>3.1.8-servicing.20420.4</MicrosoftInternalExtensionsRefsPackageVersion>
<MicrosoftJSInteropPackageVersion>3.1.29</MicrosoftJSInteropPackageVersion>
<MicrosoftJSInteropPackageVersion>3.1.30</MicrosoftJSInteropPackageVersion>
<!-- Packages from aspnet/EntityFrameworkCore -->
<dotnetefPackageVersion>3.1.29</dotnetefPackageVersion>
<MicrosoftEntityFrameworkCoreInMemoryPackageVersion>3.1.29</MicrosoftEntityFrameworkCoreInMemoryPackageVersion>
<MicrosoftEntityFrameworkCoreRelationalPackageVersion>3.1.29</MicrosoftEntityFrameworkCoreRelationalPackageVersion>
<MicrosoftEntityFrameworkCoreSqlitePackageVersion>3.1.29</MicrosoftEntityFrameworkCoreSqlitePackageVersion>
<MicrosoftEntityFrameworkCoreSqlServerPackageVersion>3.1.29</MicrosoftEntityFrameworkCoreSqlServerPackageVersion>
<MicrosoftEntityFrameworkCoreToolsPackageVersion>3.1.29</MicrosoftEntityFrameworkCoreToolsPackageVersion>
<MicrosoftEntityFrameworkCorePackageVersion>3.1.29</MicrosoftEntityFrameworkCorePackageVersion>
<dotnetefPackageVersion>3.1.30</dotnetefPackageVersion>
<MicrosoftEntityFrameworkCoreInMemoryPackageVersion>3.1.30</MicrosoftEntityFrameworkCoreInMemoryPackageVersion>
<MicrosoftEntityFrameworkCoreRelationalPackageVersion>3.1.30</MicrosoftEntityFrameworkCoreRelationalPackageVersion>
<MicrosoftEntityFrameworkCoreSqlitePackageVersion>3.1.30</MicrosoftEntityFrameworkCoreSqlitePackageVersion>
<MicrosoftEntityFrameworkCoreSqlServerPackageVersion>3.1.30</MicrosoftEntityFrameworkCoreSqlServerPackageVersion>
<MicrosoftEntityFrameworkCoreToolsPackageVersion>3.1.30</MicrosoftEntityFrameworkCoreToolsPackageVersion>
<MicrosoftEntityFrameworkCorePackageVersion>3.1.30</MicrosoftEntityFrameworkCorePackageVersion>
<!-- Packages from aspnet/AspNetCore-Tooling -->
<MicrosoftAspNetCoreMvcRazorExtensionsPackageVersion>3.1.29</MicrosoftAspNetCoreMvcRazorExtensionsPackageVersion>
<MicrosoftAspNetCoreRazorLanguagePackageVersion>3.1.29</MicrosoftAspNetCoreRazorLanguagePackageVersion>
<MicrosoftCodeAnalysisRazorPackageVersion>3.1.29</MicrosoftCodeAnalysisRazorPackageVersion>
<MicrosoftNETSdkRazorPackageVersion>3.1.29</MicrosoftNETSdkRazorPackageVersion>
<MicrosoftAspNetCoreMvcRazorExtensionsPackageVersion>3.1.30</MicrosoftAspNetCoreMvcRazorExtensionsPackageVersion>
<MicrosoftAspNetCoreRazorLanguagePackageVersion>3.1.30</MicrosoftAspNetCoreRazorLanguagePackageVersion>
<MicrosoftCodeAnalysisRazorPackageVersion>3.1.30</MicrosoftCodeAnalysisRazorPackageVersion>
<MicrosoftNETSdkRazorPackageVersion>3.1.30</MicrosoftNETSdkRazorPackageVersion>
</PropertyGroup>
<!--
......
{
"sdk": {
"version": "3.1.423"
"version": "3.1.424"
},
"tools": {
"dotnet": "3.1.423",
"dotnet": "3.1.424",
"runtimes": {
"dotnet/x64": [
"$(MicrosoftNETCoreAppInternalPackageVersion)"
......
......@@ -5,6 +5,7 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Xml.Linq;
using Microsoft.AspNetCore.DataProtection.Internal;
using Microsoft.Extensions.Logging;
......@@ -129,9 +130,17 @@ namespace Microsoft.AspNetCore.DataProtection.Repositories
// crashes mid-write, we won't end up with a corrupt .xml file.
Directory.Create(); // won't throw if the directory already exists
var tempFilename = Path.Combine(Directory.FullName, Guid.NewGuid().ToString() + ".tmp");
var finalFilename = Path.Combine(Directory.FullName, filename + ".xml");
// Create a temp file with the correct Unix file mode before moving it to the expected finalFilename.
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
var tempTempFilename = Path.GetTempFileName();
File.Move(tempTempFilename, tempFilename);
}
try
{
using (var tempFileStream = File.OpenWrite(tempFilename))
......
......@@ -2,6 +2,7 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
......@@ -158,6 +159,39 @@ namespace Microsoft.AspNetCore.DataProtection.Repositories
});
}
[ConditionalFact]
[OSSkipCondition(OperatingSystems.Windows, SkipReason = "UnixFileMode is not supported on Windows.")]
public void StoreElement_CreatesFileWithUserOnlyUnixFileMode()
{
WithUniqueTempDirectory(dirInfo =>
{
// Arrange
var element = XElement.Parse("<element1 />");
var repository = new FileSystemXmlRepository(dirInfo, NullLoggerFactory.Instance);
// Act
repository.StoreElement(element, "friendly-name");
// Assert
var fileInfo = Assert.Single(dirInfo.GetFiles());
//Assert.Equal(UnixFileMode.UserRead | UnixFileMode.UserWrite, fileInfo.UnixFileMode);
var processStartInfo = new ProcessStartInfo
{
FileName = "ls",
Arguments = $"-l {fileInfo.FullName}",
RedirectStandardOutput = true,
UseShellExecute = false
};
var process = Process.Start(processStartInfo);
Assert.NotNull(process);
var output = process!.StandardOutput.ReadToEnd();
process.WaitForExit();
Assert.StartsWith("-rw-------", output);
});
}
/// <summary>
/// Runs a test and cleans up the temp directory afterward.
/// </summary>
......
......@@ -5,6 +5,7 @@ using System;
using System.Buffers;
using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Internal;
......@@ -204,6 +205,14 @@ namespace Microsoft.AspNetCore.WebUtilities
}
_tempFileName = Path.Combine(_tempFileDirectory, "ASPNETCORE_" + Guid.NewGuid().ToString() + ".tmp");
// Create a temp file with the correct Unix file mode before moving it to the assigned _tempFileName in the _tempFileDirectory.
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
var tempTempFileName = Path.GetTempFileName();
File.Move(tempTempFileName, _tempFileName);
}
return new FileStream(_tempFileName, FileMode.Create, FileAccess.ReadWrite, FileShare.Delete, 1024 * 16,
FileOptions.Asynchronous | FileOptions.DeleteOnClose | FileOptions.SequentialScan);
}
......
......@@ -5,6 +5,7 @@ using System;
using System.Buffers;
using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Internal;
......@@ -224,6 +225,14 @@ namespace Microsoft.AspNetCore.WebUtilities
{
var tempFileDirectory = _tempFileDirectoryAccessor();
var tempFileName = Path.Combine(tempFileDirectory, "ASPNETCORE_" + Guid.NewGuid() + ".tmp");
// Create a temp file with the correct Unix file mode before moving it to the assigned tempFileName in the _tempFileDirectory.
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
var tempTempFileName = Path.GetTempFileName();
File.Move(tempTempFileName, tempFileName);
}
FileStream = new FileStream(
tempFileName,
FileMode.Create,
......
......@@ -3,9 +3,11 @@
using System;
using System.Buffers;
using System.Diagnostics;
using System.IO;
using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Testing;
using Moq;
using Xunit;
......@@ -351,6 +353,47 @@ namespace Microsoft.AspNetCore.WebUtilities
Assert.False(File.Exists(tempFileName));
}
[ConditionalFact]
[OSSkipCondition(OperatingSystems.Windows, SkipReason = "UnixFileMode is not supported on Windows.")]
public void Read_BufferingContentToDisk_CreatesFileWithUserOnlyUnixFileMode()
{
var inner = MakeStream(1024 * 2);
string tempFileName;
using (var stream = new FileBufferingReadStream(inner, 1024, null, GetCurrentDirectory()))
{
var bytes = new byte[1024 * 2];
var read0 = stream.Read(bytes, 0, bytes.Length);
Assert.Equal(bytes.Length, read0);
Assert.Equal(read0, stream.Length);
Assert.Equal(read0, stream.Position);
Assert.False(stream.InMemory);
Assert.NotNull(stream.TempFileName);
var read1 = stream.Read(bytes, 0, bytes.Length);
Assert.Equal(0, read1);
tempFileName = stream.TempFileName!;
Assert.True(File.Exists(tempFileName));
//Assert.Equal(UnixFileMode.UserRead | UnixFileMode.UserWrite, File.GetUnixFileMode(tempFileName));
var processStartInfo = new ProcessStartInfo
{
FileName = "ls",
Arguments = $"-l {tempFileName}",
RedirectStandardOutput = true,
UseShellExecute = false
};
var process = Process.Start(processStartInfo);
Assert.NotNull(process);
var output = process!.StandardOutput.ReadToEnd();
process.WaitForExit();
Assert.StartsWith("-rw-------", output);
}
Assert.False(File.Exists(tempFileName));
}
private static string GetCurrentDirectory()
{
return AppContext.BaseDirectory;
......
......@@ -7,7 +7,9 @@ using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Testing;
using Xunit;
using System.Diagnostics;
namespace Microsoft.AspNetCore.WebUtilities
{
......@@ -370,6 +372,37 @@ namespace Microsoft.AspNetCore.WebUtilities
Assert.Equal(0, bufferingStream.Length);
}
[ConditionalFact]
[OSSkipCondition(OperatingSystems.Windows, SkipReason = "UnixFileMode is not supported on Windows.")]
public void Write_BufferingContentToDisk_CreatesFileWithUserOnlyUnixFileMode()
{
// Arrange
var input = new byte[] { 1, 2, 3, };
using var bufferingStream = new FileBufferingWriteStream(memoryThreshold: 2, tempFileDirectoryAccessor: () => TempDirectory);
bufferingStream.Write(input, 0, 2);
// Act
bufferingStream.Write(input, 2, 1);
// Assert
Assert.NotNull(bufferingStream.FileStream);
//Assert.Equal(UnixFileMode.UserRead | UnixFileMode.UserWrite, File.GetUnixFileMode(bufferingStream.FileStream.SafeFileHandle));
var processStartInfo = new ProcessStartInfo
{
FileName = "ls",
Arguments = $"-l {bufferingStream.FileStream!.Name}",
RedirectStandardOutput = true,
UseShellExecute = false
};
var process = Process.Start(processStartInfo);
Assert.NotNull(process);
var output = process!.StandardOutput.ReadToEnd();
process.WaitForExit();
Assert.StartsWith("-rw-------", output);
}
public void Dispose()
{
try
......
......@@ -383,6 +383,14 @@ namespace Microsoft.AspNetCore.Certificates.Generation
throw;
}
}
// Create a temp file with the correct Unix file mode before moving it to the expected path.
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
var tempFilename = Path.GetTempFileName();
File.Move(tempFilename, path, overwrite: true);
}
try
{
diagnostics?.Debug($"Writing exported certificate to path '{path}'.");
......@@ -668,6 +676,7 @@ namespace Microsoft.AspNetCore.Certificates.Generation
try
{
var certBytes = certificate.Export(X509ContentType.Cert);
File.WriteAllBytes(certificatePath, certBytes);
var processInfo = new ProcessStartInfo(
MacOSRemoveCertificateTrustCommandLine,
......
......@@ -2,6 +2,7 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
......@@ -241,6 +242,40 @@ namespace Microsoft.AspNetCore.Certificates.Generation.Tests
Assert.Empty(CertificateManager.ListCertificates(CertificatePurpose.HTTPS, StoreName.Root, StoreLocation.CurrentUser, isValid: false).Where(c => c.Subject == TestCertificateSubject));
}
}
[ConditionalFact]
[OSSkipCondition(OperatingSystems.Windows, SkipReason = "UnixFileMode is not supported on Windows.")]
[OSSkipCondition(OperatingSystems.MacOSX, SkipReason = "https://github.com/dotnet/aspnetcore/issues/6720")]
public void EnsureCreateHttpsCertificate_CreatesFileWithUserOnlyUnixFileMode()
{
_fixture.CleanupCertificates();
const string CertificateName = nameof(EnsureCreateHttpsCertificate_CreatesFileWithUserOnlyUnixFileMode) + ".pfx";
var certificatePassword = Guid.NewGuid().ToString();
var now = DateTimeOffset.UtcNow;
now = new DateTimeOffset(now.Year, now.Month, now.Day, now.Hour, now.Minute, now.Second, 0, now.Offset);
var result = _manager
.EnsureAspNetCoreHttpsDevelopmentCertificate(now, now.AddYears(1), CertificateName, trust: false, includePrivateKey: true, password: certificatePassword, subject: TestCertificateSubject, isInteractive: false);
Assert.Equal(EnsureCertificateResult.Succeeded, result.ResultCode);
Assert.True(File.Exists(CertificateName));
//Assert.Equal(UnixFileMode.UserRead | UnixFileMode.UserWrite, File.GetUnixFileMode(CertificateName));
var processStartInfo = new ProcessStartInfo
{
FileName = "ls",
Arguments = $"-l {CertificateName}",
RedirectStandardOutput = true,
UseShellExecute = false
};
var process = Process.Start(processStartInfo);
Assert.NotNull(process);
var output = process!.StandardOutput.ReadToEnd();
process.WaitForExit();
Assert.StartsWith("-rw-------", output);
}
}
public class CertFixture : IDisposable
......
......@@ -5,6 +5,7 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Configuration.UserSecrets;
......@@ -46,6 +47,9 @@ namespace Microsoft.Extensions.SecretManager.Tools.Internal
public int Count => _secrets.Count;
// For testing.
internal string SecretsFilePath => _secretsFilePath;
public bool ContainsKey(string key) => _secrets.ContainsKey(key);
public IEnumerable<KeyValuePair<string, string>> AsEnumerable() => _secrets;
......@@ -75,6 +79,13 @@ namespace Microsoft.Extensions.SecretManager.Tools.Internal
}
}
// Create a temp file with the correct Unix file mode before moving it to the expected _filePath.
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
var tempFilename = Path.GetTempFileName();
File.Move(tempFilename, _secretsFilePath, overwrite: true);
}
File.WriteAllText(_secretsFilePath, contents.ToString(), Encoding.UTF8);
}
......
......@@ -29,6 +29,9 @@ namespace Microsoft.Extensions.SecretManager.Tools
_workingDirectory = workingDirectory;
}
// For testing.
internal string SecretsFilePath { get; private set; }
public bool TryRun(string[] args, out int returnCode)
{
try
......@@ -91,6 +94,10 @@ namespace Microsoft.Extensions.SecretManager.Tools
var store = new SecretsStore(userSecretsId, reporter);
var context = new Internal.CommandContext(store, reporter, _console);
options.Command.Execute(context);
// For testing.
SecretsFilePath = store.SecretsFilePath;
return 0;
}
......
......@@ -3,8 +3,10 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Text;
using Microsoft.AspNetCore.Testing;
using Microsoft.Extensions.Configuration.UserSecrets;
using Microsoft.Extensions.Configuration.UserSecrets.Tests;
using Microsoft.Extensions.Tools.Internal;
......@@ -336,5 +338,32 @@ namespace Microsoft.Extensions.SecretManager.Tools.Tests
Assert.DoesNotContain(Resources.FormatError_ProjectMissingId(project), _output.ToString());
Assert.DoesNotContain("--help", _output.ToString());
}
[ConditionalFact]
[OSSkipCondition(OperatingSystems.Windows, SkipReason = "UnixFileMode is not supported on Windows.")]
public void SetSecrets_CreatesFileWithUserOnlyUnixFileMode()
{
var projectPath = _fixture.GetTempSecretProject();
var secretManager = new Program(_console, projectPath);
secretManager.RunInternal("set", "key1", Guid.NewGuid().ToString(), "--verbose");
Assert.NotNull(secretManager.SecretsFilePath);
//Assert.Equal(UnixFileMode.UserRead | UnixFileMode.UserWrite, File.GetUnixFileMode(secretManager.SecretsFilePath));
var processStartInfo = new ProcessStartInfo
{
FileName = "ls",
Arguments = $"-l {secretManager.SecretsFilePath}",
RedirectStandardOutput = true,
UseShellExecute = false
};
var process = Process.Start(processStartInfo);
Assert.NotNull(process);
var output = process!.StandardOutput.ReadToEnd();
process.WaitForExit();
Assert.StartsWith("-rw-------", output);
}
}
}
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册