Reacting to Hosting changes
This commit is contained in:
parent
1ae1cdb10b
commit
bf1fc7dab3
|
|
@ -6,6 +6,7 @@ using System.Collections.Generic;
|
|||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.DependencyModel;
|
||||
using Microsoft.Extensions.PlatformAbstractions;
|
||||
|
||||
|
|
@ -23,8 +24,8 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
|||
/// <summary>
|
||||
/// Initializes a new instance of <see cref="DefaultAssemblyProvider"/>.
|
||||
/// </summary>
|
||||
/// <param name="environment">The <see cref="IApplicationEnvironment"/>.</param>
|
||||
public DefaultAssemblyProvider(IApplicationEnvironment environment)
|
||||
/// <param name="environment">The <see cref="IHostingEnvironment"/>.</param>
|
||||
public DefaultAssemblyProvider(IHostingEnvironment environment)
|
||||
: this(
|
||||
Assembly.Load(new AssemblyName(environment.ApplicationName)),
|
||||
DependencyContext.Load(Assembly.Load(new AssemblyName(environment.ApplicationName))))
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@
|
|||
"version": "1.0.0-*"
|
||||
},
|
||||
"Microsoft.Extensions.FileProviders.Abstractions": "1.0.0-*",
|
||||
"Microsoft.Extensions.PlatformAbstractions": "1.0.0-*",
|
||||
"Microsoft.Extensions.DependencyModel": "1.0.0-*",
|
||||
"Microsoft.Extensions.ClosedGenericMatcher.Sources": {
|
||||
"version": "1.0.0-*",
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ using System.Reflection.PortableExecutable;
|
|||
using System.Runtime.Loader;
|
||||
#endif
|
||||
using System.Text;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.AspNetCore.Mvc.Razor.Compilation;
|
||||
using Microsoft.CodeAnalysis;
|
||||
using Microsoft.CodeAnalysis.CSharp;
|
||||
|
|
@ -20,7 +21,6 @@ using Microsoft.CodeAnalysis.Text;
|
|||
using Microsoft.Dnx.Compilation.CSharp;
|
||||
using Microsoft.Extensions.CompilationAbstractions;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Microsoft.Extensions.PlatformAbstractions;
|
||||
|
||||
namespace Microsoft.AspNetCore.Mvc.Razor.Internal
|
||||
{
|
||||
|
|
@ -32,7 +32,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Internal
|
|||
private readonly ConcurrentDictionary<string, AssemblyMetadata> _metadataFileCache =
|
||||
new ConcurrentDictionary<string, AssemblyMetadata>(StringComparer.OrdinalIgnoreCase);
|
||||
|
||||
private readonly IApplicationEnvironment _environment;
|
||||
private readonly IHostingEnvironment _environment;
|
||||
private readonly ILibraryExporter _libraryExporter;
|
||||
private readonly RazorViewEngineOptions _options;
|
||||
private readonly Lazy<List<MetadataReference>> _applicationReferences;
|
||||
|
|
@ -48,7 +48,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Internal
|
|||
/// <param name="optionsAccessor">Accessor to <see cref="RazorViewEngineOptions"/>.</param>
|
||||
/// <param name="fileProviderAccessor">The <see cref="IRazorViewEngineFileProviderAccessor"/>.</param>
|
||||
public DnxRoslynCompilationService(
|
||||
IApplicationEnvironment environment,
|
||||
IHostingEnvironment environment,
|
||||
ILibraryExporter libraryExporter,
|
||||
IOptions<RazorViewEngineOptions> optionsAccessor,
|
||||
IRazorViewEngineFileProviderAccessor fileProviderAccessor)
|
||||
|
|
|
|||
|
|
@ -7,10 +7,10 @@ using System.Diagnostics;
|
|||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.AspNetCore.Mvc.Rendering;
|
||||
using Microsoft.AspNetCore.Mvc.ViewFeatures;
|
||||
using Microsoft.Extensions.Localization;
|
||||
using Microsoft.Extensions.PlatformAbstractions;
|
||||
|
||||
namespace Microsoft.AspNetCore.Mvc.Localization
|
||||
{
|
||||
|
|
@ -28,20 +28,20 @@ namespace Microsoft.AspNetCore.Mvc.Localization
|
|||
/// Creates a new <see cref="ViewLocalizer"/>.
|
||||
/// </summary>
|
||||
/// <param name="localizerFactory">The <see cref="IHtmlLocalizerFactory"/>.</param>
|
||||
/// <param name="applicationEnvironment">The <see cref="IApplicationEnvironment"/>.</param>
|
||||
public ViewLocalizer(IHtmlLocalizerFactory localizerFactory, IApplicationEnvironment applicationEnvironment)
|
||||
/// <param name="hostingEnvironment">The <see cref="IHostingEnvironment"/>.</param>
|
||||
public ViewLocalizer(IHtmlLocalizerFactory localizerFactory, IHostingEnvironment hostingEnvironment)
|
||||
{
|
||||
if (localizerFactory == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(localizerFactory));
|
||||
}
|
||||
|
||||
if (applicationEnvironment == null)
|
||||
if (hostingEnvironment == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(applicationEnvironment));
|
||||
throw new ArgumentNullException(nameof(hostingEnvironment));
|
||||
}
|
||||
|
||||
_applicationName = applicationEnvironment.ApplicationName;
|
||||
_applicationName = hostingEnvironment.ApplicationName;
|
||||
_localizerFactory = localizerFactory;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -23,14 +23,9 @@
|
|||
}
|
||||
},
|
||||
"frameworks": {
|
||||
"net451": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.PlatformAbstractions": "1.0.0-*"
|
||||
}
|
||||
},
|
||||
"net451": { },
|
||||
"netstandard1.3": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.PlatformAbstractions": "1.0.0-*",
|
||||
"System.Collections.Concurrent": "4.0.12-*",
|
||||
"System.ComponentModel.TypeConverter": "4.0.1-*",
|
||||
"System.Reflection.Extensions": "4.0.1-*",
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ using System.Runtime.Loader;
|
|||
#endif
|
||||
using System.Text;
|
||||
using Microsoft.AspNetCore.Diagnostics;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.AspNetCore.Mvc.Razor.Compilation;
|
||||
using Microsoft.CodeAnalysis;
|
||||
using Microsoft.CodeAnalysis.CSharp;
|
||||
|
|
@ -23,7 +24,6 @@ using Microsoft.Extensions.DependencyModel;
|
|||
using Microsoft.Extensions.FileProviders;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Microsoft.Extensions.PlatformAbstractions;
|
||||
|
||||
namespace Microsoft.AspNetCore.Mvc.Razor.Internal
|
||||
{
|
||||
|
|
@ -50,12 +50,12 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Internal
|
|||
/// <summary>
|
||||
/// Initalizes a new instance of the <see cref="DefaultRoslynCompilationService"/> class.
|
||||
/// </summary>
|
||||
/// <param name="environment">The environment for the executing application.</param>
|
||||
/// <param name="environment">The <see cref="IHostingEnvironment"/>.</param>
|
||||
/// <param name="optionsAccessor">Accessor to <see cref="RazorViewEngineOptions"/>.</param>
|
||||
/// <param name="fileProviderAccessor">The <see cref="IRazorViewEngineFileProviderAccessor"/>.</param>
|
||||
/// <param name="loggerFactory">The <see cref="ILoggerFactory"/>.</param>
|
||||
public DefaultRoslynCompilationService(
|
||||
IApplicationEnvironment environment,
|
||||
IHostingEnvironment environment,
|
||||
IOptions<RazorViewEngineOptions> optionsAccessor,
|
||||
IRazorViewEngineFileProviderAccessor fileProviderAccessor,
|
||||
ILoggerFactory loggerFactory)
|
||||
|
|
@ -326,7 +326,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Internal
|
|||
mappedLineSpan.EndLinePosition.Character + 1);
|
||||
}
|
||||
|
||||
private static DependencyContext GetDependencyContext(IApplicationEnvironment environment)
|
||||
private static DependencyContext GetDependencyContext(IHostingEnvironment environment)
|
||||
{
|
||||
if (environment.ApplicationName != null)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -5,11 +5,11 @@ using System;
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.CodeAnalysis;
|
||||
using Microsoft.CodeAnalysis.CSharp;
|
||||
using Microsoft.Extensions.DependencyModel;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Microsoft.Extensions.PlatformAbstractions;
|
||||
|
||||
namespace Microsoft.AspNetCore.Mvc.Razor.Internal
|
||||
{
|
||||
|
|
@ -22,14 +22,14 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Internal
|
|||
/// <summary>
|
||||
/// Initializes a new instance of <see cref="DependencyContextRazorViewEngineOptionsSetup"/>.
|
||||
/// </summary>
|
||||
public DependencyContextRazorViewEngineOptionsSetup(IApplicationEnvironment applicationEnvironment)
|
||||
: base(options => ConfigureRazor(options, applicationEnvironment))
|
||||
public DependencyContextRazorViewEngineOptionsSetup(IHostingEnvironment hostingEnvironment)
|
||||
: base(options => ConfigureRazor(options, hostingEnvironment))
|
||||
{
|
||||
}
|
||||
|
||||
private static void ConfigureRazor(RazorViewEngineOptions options, IApplicationEnvironment applicationEnvironment)
|
||||
private static void ConfigureRazor(RazorViewEngineOptions options, IHostingEnvironment hostingEnvironment)
|
||||
{
|
||||
var applicationAssembly = Assembly.Load(new AssemblyName(applicationEnvironment.ApplicationName));
|
||||
var applicationAssembly = Assembly.Load(new AssemblyName(hostingEnvironment.ApplicationName));
|
||||
var dependencyContext = DependencyContext.Load(applicationAssembly);
|
||||
var compilationOptions = dependencyContext?.CompilationOptions ?? Extensions.DependencyModel.CompilationOptions.Default;
|
||||
|
||||
|
|
|
|||
|
|
@ -5,10 +5,7 @@ using System.Linq;
|
|||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.AspNetCore.Mvc.Razor;
|
||||
using Microsoft.CodeAnalysis;
|
||||
using Microsoft.CodeAnalysis.CSharp;
|
||||
using Microsoft.Extensions.FileProviders;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Microsoft.Extensions.PlatformAbstractions;
|
||||
|
||||
namespace Microsoft.AspNetCore.Mvc
|
||||
{
|
||||
|
|
@ -20,21 +17,21 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
/// <summary>
|
||||
/// Initializes a new instance of <see cref="RazorViewEngineOptions"/>.
|
||||
/// </summary>
|
||||
/// <param name="applicationEnvironment"><see cref="IApplicationEnvironment"/> for the application.</param>
|
||||
/// <param name="hostingEnvironment"><see cref="IHostingEnvironment"/> for the application.</param>
|
||||
public RazorViewEngineOptionsSetup(
|
||||
IApplicationEnvironment applicationEnvironment,
|
||||
IHostingEnvironment hostingEnvironment)
|
||||
: base(options => ConfigureRazor(options, applicationEnvironment, hostingEnvironment))
|
||||
: base(options => ConfigureRazor(options, hostingEnvironment))
|
||||
{
|
||||
}
|
||||
|
||||
private static void ConfigureRazor(
|
||||
RazorViewEngineOptions razorOptions,
|
||||
IApplicationEnvironment applicationEnvironment,
|
||||
IHostingEnvironment hostingEnvironment)
|
||||
{
|
||||
razorOptions.FileProviders.Add(new PhysicalFileProvider(applicationEnvironment.ApplicationBasePath));
|
||||
if (hostingEnvironment.ContentRootFileProvider != null)
|
||||
{
|
||||
razorOptions.FileProviders.Add(hostingEnvironment.ContentRootFileProvider);
|
||||
}
|
||||
|
||||
var compilationOptions = razorOptions.CompilationOptions;
|
||||
string configurationSymbol;
|
||||
|
|
|
|||
|
|
@ -9,9 +9,9 @@ namespace Microsoft.AspNetCore.Mvc.FunctionalTests
|
|||
{
|
||||
public class MvcEncodedTestFixture<TStartup> : MvcTestFixture<TStartup>
|
||||
{
|
||||
protected override void InitializeServices(IServiceCollection services, string relativePath)
|
||||
protected override void InitializeServices(IServiceCollection services)
|
||||
{
|
||||
base.InitializeServices(services, relativePath);
|
||||
base.InitializeServices(services);
|
||||
services.AddTransient<HtmlEncoder, HtmlTestEncoder>();
|
||||
services.AddTransient<JavaScriptEncoder, JavaScriptTestEncoder>();
|
||||
services.AddTransient<UrlEncoder, UrlTestEncoder>();
|
||||
|
|
|
|||
|
|
@ -36,7 +36,8 @@ namespace Microsoft.AspNetCore.Mvc.FunctionalTests
|
|||
using (new CultureReplacer())
|
||||
{
|
||||
var builder = new WebHostBuilder()
|
||||
.ConfigureServices(serviceCollection => InitializeServices(serviceCollection, relativePath))
|
||||
.UseContentRoot(GetApplicationPath(relativePath))
|
||||
.ConfigureServices(InitializeServices)
|
||||
.UseStartup(typeof(TStartup));
|
||||
|
||||
_server = new TestServer(builder);
|
||||
|
|
@ -54,14 +55,22 @@ namespace Microsoft.AspNetCore.Mvc.FunctionalTests
|
|||
_server.Dispose();
|
||||
}
|
||||
|
||||
protected virtual void InitializeServices(IServiceCollection services, string relativePath)
|
||||
private static string GetApplicationPath(string relativePath)
|
||||
{
|
||||
var startupAssembly = typeof(TStartup).GetTypeInfo().Assembly;
|
||||
var applicationName = startupAssembly.GetName().Name;
|
||||
#if DNX451
|
||||
var libraryManager = DnxPlatformServices.Default.LibraryManager;
|
||||
var library = libraryManager.GetLibrary(applicationName);
|
||||
return Path.GetDirectoryName(library.Path);
|
||||
#else
|
||||
var applicationBasePath = PlatformServices.Default.Application.ApplicationBasePath;
|
||||
return Path.GetFullPath(Path.Combine(applicationBasePath, relativePath, applicationName));
|
||||
#endif
|
||||
}
|
||||
|
||||
protected virtual void InitializeServices(IServiceCollection services)
|
||||
{
|
||||
// When an application executes in a regular context, the application base path points to the root
|
||||
// directory where the application is located, for example .../samples/MvcSample.Web. However, when
|
||||
// executing an application as part of a test, the ApplicationBasePath of the IApplicationEnvironment
|
||||
// points to the root folder of the test project.
|
||||
// To compensate, we need to calculate the correct project path and override the application
|
||||
// environment value so that components like the view engine work properly in the context of the test.
|
||||
var startupAssembly = typeof(TStartup).GetTypeInfo().Assembly;
|
||||
var applicationName = startupAssembly.GetName().Name;
|
||||
|
||||
|
|
@ -69,21 +78,8 @@ namespace Microsoft.AspNetCore.Mvc.FunctionalTests
|
|||
#if DNX451
|
||||
services.AddSingleton(CompilationServices.Default.LibraryExporter);
|
||||
services.AddSingleton<ICompilationService, DnxRoslynCompilationService>();
|
||||
|
||||
var libraryManager = DnxPlatformServices.Default.LibraryManager;
|
||||
var library = libraryManager.GetLibrary(applicationName);
|
||||
var applicationRoot = Path.GetDirectoryName(library.Path);
|
||||
#else
|
||||
var applicationRoot = Path.GetFullPath(Path.Combine(
|
||||
applicationEnvironment.ApplicationBasePath,
|
||||
relativePath,
|
||||
applicationName
|
||||
));
|
||||
#endif
|
||||
|
||||
services.AddSingleton<IApplicationEnvironment>(
|
||||
new TestApplicationEnvironment(applicationEnvironment, applicationName, applicationRoot));
|
||||
|
||||
// Inject a custom assembly provider. Overrides AddMvc() because that uses TryAdd().
|
||||
var assemblyProvider = new StaticAssemblyProvider();
|
||||
assemblyProvider.CandidateAssemblies.Add(startupAssembly);
|
||||
|
|
|
|||
|
|
@ -1,44 +0,0 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System.Runtime.Versioning;
|
||||
using Microsoft.Extensions.PlatformAbstractions;
|
||||
|
||||
namespace Microsoft.AspNetCore.Mvc.FunctionalTests
|
||||
{
|
||||
// An application environment that overrides the base path of the original
|
||||
// application environment in order to make it point to the folder of the original web
|
||||
// aaplication so that components like ViewEngines can find views as if they were executing
|
||||
// in a regular context.
|
||||
public class TestApplicationEnvironment : IApplicationEnvironment
|
||||
{
|
||||
private readonly IApplicationEnvironment _original;
|
||||
|
||||
public TestApplicationEnvironment(IApplicationEnvironment original, string name, string basePath)
|
||||
{
|
||||
_original = original;
|
||||
ApplicationName = name;
|
||||
ApplicationBasePath = basePath;
|
||||
}
|
||||
|
||||
public string ApplicationName { get; }
|
||||
|
||||
public string ApplicationVersion
|
||||
{
|
||||
get
|
||||
{
|
||||
return _original.ApplicationVersion;
|
||||
}
|
||||
}
|
||||
|
||||
public string ApplicationBasePath { get; }
|
||||
|
||||
public FrameworkName RuntimeFramework
|
||||
{
|
||||
get
|
||||
{
|
||||
return _original.RuntimeFramework;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,6 +2,7 @@
|
|||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System.Globalization;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.AspNetCore.Mvc.Rendering;
|
||||
using Microsoft.Extensions.Localization;
|
||||
using Microsoft.Extensions.PlatformAbstractions;
|
||||
|
|
@ -39,9 +40,6 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test
|
|||
public void HtmlLocalizerOfTTest_UseIndexerWithArguments_ReturnsLocalizedHtmlString()
|
||||
{
|
||||
// Arrange
|
||||
var applicationEnvironment = new Mock<IApplicationEnvironment>();
|
||||
applicationEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
||||
|
||||
var localizedString = new LocalizedHtmlString("Hello", "Bonjour test");
|
||||
|
||||
var htmlLocalizer = new Mock<IHtmlLocalizer>();
|
||||
|
|
|
|||
|
|
@ -5,10 +5,10 @@ using System;
|
|||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.AspNetCore.Mvc.Rendering;
|
||||
using Microsoft.AspNetCore.Mvc.ViewEngines;
|
||||
using Microsoft.Extensions.Localization;
|
||||
using Microsoft.Extensions.PlatformAbstractions;
|
||||
using Moq;
|
||||
using Xunit;
|
||||
|
||||
|
|
@ -31,15 +31,15 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test
|
|||
public void ViewLocalizer_LooksForCorrectResourceBaseNameLocation(string appName, string viewPath, string executingPath, string expectedBaseName)
|
||||
{
|
||||
// Arrange
|
||||
var applicationEnvironment = new Mock<IApplicationEnvironment>();
|
||||
applicationEnvironment.Setup(a => a.ApplicationName).Returns(appName);
|
||||
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||
hostingEnvironment.Setup(a => a.ApplicationName).Returns(appName);
|
||||
var htmlLocalizerFactory = new Mock<IHtmlLocalizerFactory>(MockBehavior.Loose);
|
||||
var view = new Mock<IView>();
|
||||
view.Setup(v => v.Path).Returns(viewPath);
|
||||
var viewContext = new ViewContext();
|
||||
viewContext.ExecutingFilePath = executingPath;
|
||||
viewContext.View = view.Object;
|
||||
var viewLocalizer = new ViewLocalizer(htmlLocalizerFactory.Object, applicationEnvironment.Object);
|
||||
var viewLocalizer = new ViewLocalizer(htmlLocalizerFactory.Object, hostingEnvironment.Object);
|
||||
|
||||
// Act
|
||||
viewLocalizer.Contextualize(viewContext);
|
||||
|
|
@ -55,8 +55,8 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test
|
|||
public void ViewLocalizer_UseIndexer_ReturnsLocalizedHtmlString()
|
||||
{
|
||||
// Arrange
|
||||
var applicationEnvironment = new Mock<IApplicationEnvironment>();
|
||||
applicationEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
||||
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||
hostingEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
||||
|
||||
var localizedString = new LocalizedHtmlString("Hello", "Bonjour");
|
||||
|
||||
|
|
@ -67,7 +67,7 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test
|
|||
htmlLocalizerFactory.Setup(h => h.Create("TestApplication.example", "TestApplication"))
|
||||
.Returns(htmlLocalizer.Object);
|
||||
|
||||
var viewLocalizer = new ViewLocalizer(htmlLocalizerFactory.Object, applicationEnvironment.Object);
|
||||
var viewLocalizer = new ViewLocalizer(htmlLocalizerFactory.Object, hostingEnvironment.Object);
|
||||
|
||||
var view = new Mock<IView>();
|
||||
view.Setup(v => v.Path).Returns("example");
|
||||
|
|
@ -87,8 +87,8 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test
|
|||
public void ViewLocalizer_UseIndexerWithArguments_ReturnsLocalizedHtmlString()
|
||||
{
|
||||
// Arrange
|
||||
var applicationEnvironment = new Mock<IApplicationEnvironment>();
|
||||
applicationEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
||||
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||
hostingEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
||||
|
||||
var localizedString = new LocalizedHtmlString("Hello", "Bonjour test");
|
||||
|
||||
|
|
@ -99,7 +99,7 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test
|
|||
htmlLocalizerFactory.Setup(
|
||||
h => h.Create("TestApplication.example", "TestApplication")).Returns(htmlLocalizer.Object);
|
||||
|
||||
var viewLocalizer = new ViewLocalizer(htmlLocalizerFactory.Object, applicationEnvironment.Object);
|
||||
var viewLocalizer = new ViewLocalizer(htmlLocalizerFactory.Object, hostingEnvironment.Object);
|
||||
|
||||
var view = new Mock<IView>();
|
||||
view.Setup(v => v.Path).Returns("example");
|
||||
|
|
@ -121,9 +121,9 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test
|
|||
// Arrange
|
||||
var stringLocalizer = new TestStringLocalizer();
|
||||
var htmlLocalizer = new HtmlLocalizer(stringLocalizer);
|
||||
var applicationEnvironment = new Mock<IApplicationEnvironment>();
|
||||
applicationEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
||||
var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), applicationEnvironment.Object);
|
||||
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||
hostingEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
||||
var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), hostingEnvironment.Object);
|
||||
|
||||
var view = new Mock<IView>();
|
||||
view.Setup(v => v.Path).Returns("example");
|
||||
|
|
@ -146,9 +146,9 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test
|
|||
// Arrange
|
||||
var stringLocalizer = new TestStringLocalizer();
|
||||
var htmlLocalizer = new HtmlLocalizer(stringLocalizer);
|
||||
var applicationEnvironment = new Mock<IApplicationEnvironment>();
|
||||
applicationEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
||||
var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), applicationEnvironment.Object);
|
||||
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||
hostingEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
||||
var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), hostingEnvironment.Object);
|
||||
|
||||
var view = new Mock<IView>();
|
||||
view.Setup(v => v.Path).Returns("example");
|
||||
|
|
@ -172,9 +172,9 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test
|
|||
// Arrange
|
||||
var stringLocalizer = new TestStringLocalizer();
|
||||
var htmlLocalizer = new HtmlLocalizer(stringLocalizer);
|
||||
var applicationEnvironment = new Mock<IApplicationEnvironment>();
|
||||
applicationEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
||||
var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), applicationEnvironment.Object);
|
||||
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||
hostingEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
||||
var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), hostingEnvironment.Object);
|
||||
|
||||
var view = new Mock<IView>();
|
||||
view.Setup(v => v.Path).Returns("example");
|
||||
|
|
@ -196,9 +196,9 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test
|
|||
// Arrange
|
||||
var stringLocalizer = new TestStringLocalizer();
|
||||
var htmlLocalizer = new HtmlLocalizer(stringLocalizer);
|
||||
var applicationEnvironment = new Mock<IApplicationEnvironment>();
|
||||
applicationEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
||||
var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), applicationEnvironment.Object);
|
||||
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||
hostingEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
||||
var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), hostingEnvironment.Object);
|
||||
|
||||
var view = new Mock<IView>();
|
||||
view.Setup(v => v.Path).Returns("example");
|
||||
|
|
@ -220,9 +220,9 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test
|
|||
// Arrange
|
||||
var stringLocalizer = new TestStringLocalizer();
|
||||
var htmlLocalizer = new HtmlLocalizer(stringLocalizer);
|
||||
var applicationEnvironment = new Mock<IApplicationEnvironment>();
|
||||
applicationEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
||||
var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), applicationEnvironment.Object);
|
||||
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||
hostingEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
||||
var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), hostingEnvironment.Object);
|
||||
|
||||
var view = new Mock<IView>();
|
||||
view.Setup(v => v.Path).Returns("example");
|
||||
|
|
@ -244,9 +244,9 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test
|
|||
// Arrange
|
||||
var stringLocalizer = new TestStringLocalizer();
|
||||
var htmlLocalizer = new HtmlLocalizer(stringLocalizer);
|
||||
var applicationEnvironment = new Mock<IApplicationEnvironment>();
|
||||
applicationEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
||||
var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), applicationEnvironment.Object);
|
||||
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||
hostingEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
||||
var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), hostingEnvironment.Object);
|
||||
|
||||
var view = new Mock<IView>();
|
||||
view.Setup(v => v.Path).Returns("example");
|
||||
|
|
@ -268,9 +268,9 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test
|
|||
// Arrange
|
||||
var stringLocalizer = new TestStringLocalizer();
|
||||
var htmlLocalizer = new HtmlLocalizer(stringLocalizer);
|
||||
var applicationEnvironment = new Mock<IApplicationEnvironment>();
|
||||
applicationEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
||||
var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), applicationEnvironment.Object);
|
||||
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||
hostingEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
||||
var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), hostingEnvironment.Object);
|
||||
|
||||
var view = new Mock<IView>();
|
||||
view.Setup(v => v.Path).Returns("example");
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ using Microsoft.AspNetCore.Razor.TagHelpers;
|
|||
using Microsoft.AspNetCore.Routing;
|
||||
using Microsoft.Extensions.Caching.Memory;
|
||||
using Microsoft.Extensions.FileProviders;
|
||||
using Microsoft.Extensions.PlatformAbstractions;
|
||||
using Microsoft.Extensions.Primitives;
|
||||
using Microsoft.Extensions.WebEncoders.Testing;
|
||||
using Moq;
|
||||
|
|
@ -1034,13 +1033,6 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers
|
|||
return hostingEnvironment.Object;
|
||||
}
|
||||
|
||||
private static IApplicationEnvironment MakeApplicationEnvironment(string applicationName = "testApplication")
|
||||
{
|
||||
var applicationEnvironment = new Mock<IApplicationEnvironment>();
|
||||
applicationEnvironment.Setup(a => a.ApplicationName).Returns(applicationName);
|
||||
return applicationEnvironment.Object;
|
||||
}
|
||||
|
||||
private static IMemoryCache MakeCache() => new MemoryCache(new MemoryCacheOptions());
|
||||
|
||||
private static IUrlHelperFactory MakeUrlHelperFactory()
|
||||
|
|
|
|||
|
|
@ -971,13 +971,6 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers
|
|||
return hostingEnvironment.Object;
|
||||
}
|
||||
|
||||
private static IApplicationEnvironment MakeApplicationEnvironment(string applicationName = "testApplication")
|
||||
{
|
||||
var applicationEnvironment = new Mock<IApplicationEnvironment>();
|
||||
applicationEnvironment.Setup(a => a.ApplicationName).Returns(applicationName);
|
||||
return applicationEnvironment.Object;
|
||||
}
|
||||
|
||||
private static IMemoryCache MakeCache() => new MemoryCache(new MemoryCacheOptions());
|
||||
|
||||
private static IUrlHelperFactory MakeUrlHelperFactory()
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@
|
|||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Threading;
|
||||
|
|
@ -18,9 +17,9 @@ using Microsoft.AspNetCore.Mvc.ModelBinding.Metadata;
|
|||
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
||||
using Microsoft.AspNetCore.Mvc.Razor;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.FileProviders;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Microsoft.Extensions.PlatformAbstractions;
|
||||
using Moq;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using Xunit;
|
||||
|
|
@ -247,17 +246,14 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
|
||||
private static void AddViewEngineOptionsServices(IServiceCollection serviceCollection)
|
||||
{
|
||||
serviceCollection.AddSingleton(Mock.Of<IHostingEnvironment>());
|
||||
var applicationEnvironment = new Mock<IApplicationEnvironment>();
|
||||
applicationEnvironment.SetupGet(e => e.ApplicationName)
|
||||
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||
hostingEnvironment.SetupGet(e => e.ApplicationName)
|
||||
.Returns(typeof(MvcOptionsSetupTest).GetTypeInfo().Assembly.GetName().Name);
|
||||
|
||||
// ApplicationBasePath is used to set up a PhysicalFileProvider which requires
|
||||
// a real directory.
|
||||
applicationEnvironment.SetupGet(e => e.ApplicationBasePath)
|
||||
.Returns(Directory.GetCurrentDirectory());
|
||||
hostingEnvironment.SetupGet(e => e.ContentRootFileProvider)
|
||||
.Returns(Mock.Of<IFileProvider>());
|
||||
|
||||
serviceCollection.AddSingleton(applicationEnvironment.Object);
|
||||
serviceCollection.AddSingleton(hostingEnvironment.Object);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,20 +19,20 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
{
|
||||
// Arrange
|
||||
var options = new RazorViewEngineOptions();
|
||||
var appEnv = new Mock<IApplicationEnvironment>();
|
||||
appEnv.SetupGet(e => e.ApplicationBasePath)
|
||||
.Returns(Directory.GetCurrentDirectory());
|
||||
var expected = Mock.Of<IFileProvider>();
|
||||
var hostingEnv = new Mock<IHostingEnvironment>();
|
||||
hostingEnv.SetupGet(e => e.ContentRootFileProvider)
|
||||
.Returns(expected);
|
||||
hostingEnv.SetupGet(e => e.EnvironmentName)
|
||||
.Returns("Development");
|
||||
var optionsSetup = new RazorViewEngineOptionsSetup(appEnv.Object, hostingEnv.Object);
|
||||
var optionsSetup = new RazorViewEngineOptionsSetup(hostingEnv.Object);
|
||||
|
||||
// Act
|
||||
optionsSetup.Configure(options);
|
||||
|
||||
// Assert
|
||||
var fileProvider = Assert.Single(options.FileProviders);
|
||||
Assert.IsType<PhysicalFileProvider>(fileProvider);
|
||||
Assert.Same(expected, fileProvider);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
|
|
@ -43,13 +43,10 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
{
|
||||
// Arrange
|
||||
var options = new RazorViewEngineOptions();
|
||||
var appEnv = new Mock<IApplicationEnvironment>();
|
||||
appEnv.SetupGet(e => e.ApplicationBasePath)
|
||||
.Returns(Directory.GetCurrentDirectory());
|
||||
var hostingEnv = new Mock<IHostingEnvironment>();
|
||||
hostingEnv.SetupGet(e => e.EnvironmentName)
|
||||
.Returns(environment);
|
||||
var optionsSetup = new RazorViewEngineOptionsSetup(appEnv.Object, hostingEnv.Object);
|
||||
var optionsSetup = new RazorViewEngineOptionsSetup(hostingEnv.Object);
|
||||
|
||||
// Act
|
||||
optionsSetup.Configure(options);
|
||||
|
|
@ -68,13 +65,10 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
{
|
||||
// Arrange
|
||||
var options = new RazorViewEngineOptions();
|
||||
var appEnv = new Mock<IApplicationEnvironment>();
|
||||
appEnv.SetupGet(e => e.ApplicationBasePath)
|
||||
.Returns(Directory.GetCurrentDirectory());
|
||||
var hostingEnv = new Mock<IHostingEnvironment>();
|
||||
hostingEnv.SetupGet(e => e.EnvironmentName)
|
||||
.Returns(environment);
|
||||
var optionsSetup = new RazorViewEngineOptionsSetup(appEnv.Object, hostingEnv.Object);
|
||||
var optionsSetup = new RazorViewEngineOptionsSetup(hostingEnv.Object);
|
||||
|
||||
// Act
|
||||
optionsSetup.Configure(options);
|
||||
|
|
|
|||
|
|
@ -3,29 +3,29 @@
|
|||
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.PlatformAbstractions;
|
||||
|
||||
namespace FilesWebSite
|
||||
{
|
||||
public class DownloadFilesController : Controller
|
||||
{
|
||||
private readonly IApplicationEnvironment _appEnvironment;
|
||||
private readonly IHostingEnvironment _hostingEnvironment;
|
||||
|
||||
public DownloadFilesController(IApplicationEnvironment appEnvironment)
|
||||
public DownloadFilesController(IHostingEnvironment hostingEnvironment)
|
||||
{
|
||||
_appEnvironment = appEnvironment;
|
||||
_hostingEnvironment = hostingEnvironment;
|
||||
}
|
||||
|
||||
public IActionResult DowloadFromDisk()
|
||||
{
|
||||
var path = Path.Combine(_appEnvironment.ApplicationBasePath, "sample.txt");
|
||||
var path = Path.Combine(_hostingEnvironment.ContentRootPath, "sample.txt");
|
||||
return PhysicalFile(path, "text/plain");
|
||||
}
|
||||
|
||||
public IActionResult DowloadFromDiskWithFileName()
|
||||
{
|
||||
var path = Path.Combine(_appEnvironment.ApplicationBasePath, "sample.txt");
|
||||
var path = Path.Combine(_hostingEnvironment.ContentRootPath, "sample.txt");
|
||||
return PhysicalFile(path, "text/plain", "downloadName.txt");
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue