public void Dispose() { if (_razorEngineRendererHost != null) { _razorEngineRendererHost.Dispose(); _razorEngineRendererHost = null; } }
public LoadResult Load(Stream templateStream) { if (templateStream == null) { throw new ArgumentNullException(nameof(templateStream)); } if (!templateStream.CanRead || !templateStream.CanSeek) { throw new ArgumentException("The supplied stream must be readable and seekable", nameof(templateStream)); } if (_loadCalled) { throw new InvalidOperationException("Cannot call Load more than once"); } _loadCalled = true; _razorEngineRendererHost = new AppDomainIsolatedHost <RazorEngineRenderer>(); _encoding = TextEncodingDetector.GetEncoding(templateStream); using (var reader = new StreamReader(templateStream)) { _loadedTemplate = reader.ReadToEnd(); } RazorTemplateLoadResult razorTemplateLoadResult; try { _razorEngineRenderer = _razorEngineRendererHost.CreateHostedInstance(); razorTemplateLoadResult = _razorEngineRenderer.LoadTemplate(_loadedTemplate); } catch (TemplateParsingException ex) { razorTemplateLoadResult = new RazorTemplateLoadResult( RazorTemplateLoadResult.LoadResultStatus.CodeGenerationFailed, new[] { $"Code Generation Error: {ex.Message} (at line {ex.Line}, column {ex.Column}" }); } catch (TemplateCompilationException ex) { razorTemplateLoadResult = new RazorTemplateLoadResult( RazorTemplateLoadResult.LoadResultStatus.CodeCompilationFailed, ex.CompilerErrors.Select(e => $"Code Compilation Error: {e.ErrorNumber}: {e.ErrorText} (at line {e.Line}, column {e.Column})").ToArray()); } catch (Exception ex) { razorTemplateLoadResult = new RazorTemplateLoadResult( RazorTemplateLoadResult.LoadResultStatus.CodeCompilationFailed, new [] { $"Exception while compiling template: {ex}" }); } return(MapToLoadResult(razorTemplateLoadResult)); }
public void AppDomainIsolatedHost_Dispose_IsolationAppDomainUnloaded() { // Arrange const string appDomainName = @"testHost"; // Act using (var isolatedHost = new AppDomainIsolatedHost <TestHost>(location, string.Empty, appDomainName)) { } // Assert Assert.False(AppDomainHelper.GetAppDomainNames().Any(d => IsIsolatedAppDomain(d, appDomainName))); }
public void AppDomainIsolatedHost_StartHost_IsolationAppDomainLoaded() { // Arrange const string appDomainName = @"testHost"; using (var isolatedHost = new AppDomainIsolatedHost <TestHost>(location, string.Empty, appDomainName)) { // Act using (var handle = isolatedHost.Start()) { // Assert Assert.True(AppDomainHelper.GetAppDomainNames().Any(d => IsIsolatedAppDomain(d, appDomainName))); } } }
public void AppDomainIsolatedHost_Create_IsolationAppDomainLoaded() { // Arrange const string appDomainName = @"testHost"; Assert.False(AppDomainHelper.GetAppDomainNames().Any(d => IsIsolatedAppDomain(d, appDomainName))); // Act using (var isolatedHost = new AppDomainIsolatedHost <TestHost>(location, string.Empty, appDomainName)) { // Assert Assert.NotNull(isolatedHost); Assert.True(AppDomainHelper.GetAppDomainNames().Any(d => IsIsolatedAppDomain(d, appDomainName))); } }