Allow ILogger.BeginScope to be null (#10673)
Fixes https://github.com/aspnet/AspNetCore/issues/10549
This commit is contained in:
parent
69139b5023
commit
71c91f310f
|
|
@ -14,6 +14,7 @@ using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
{
|
{
|
||||||
|
#nullable enable
|
||||||
internal abstract class ResourceInvoker
|
internal abstract class ResourceInvoker
|
||||||
{
|
{
|
||||||
protected readonly DiagnosticListener _diagnosticListener;
|
protected readonly DiagnosticListener _diagnosticListener;
|
||||||
|
|
@ -24,18 +25,18 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
protected readonly IFilterMetadata[] _filters;
|
protected readonly IFilterMetadata[] _filters;
|
||||||
protected readonly IList<IValueProviderFactory> _valueProviderFactories;
|
protected readonly IList<IValueProviderFactory> _valueProviderFactories;
|
||||||
|
|
||||||
private AuthorizationFilterContextSealed _authorizationContext;
|
private AuthorizationFilterContextSealed? _authorizationContext;
|
||||||
private ResourceExecutingContextSealed _resourceExecutingContext;
|
private ResourceExecutingContextSealed? _resourceExecutingContext;
|
||||||
private ResourceExecutedContextSealed _resourceExecutedContext;
|
private ResourceExecutedContextSealed? _resourceExecutedContext;
|
||||||
private ExceptionContextSealed _exceptionContext;
|
private ExceptionContextSealed? _exceptionContext;
|
||||||
private ResultExecutingContextSealed _resultExecutingContext;
|
private ResultExecutingContextSealed? _resultExecutingContext;
|
||||||
private ResultExecutedContextSealed _resultExecutedContext;
|
private ResultExecutedContextSealed? _resultExecutedContext;
|
||||||
|
|
||||||
// Do not make this readonly, it's mutable. We don't want to make a copy.
|
// Do not make this readonly, it's mutable. We don't want to make a copy.
|
||||||
// https://blogs.msdn.microsoft.com/ericlippert/2008/05/14/mutating-readonly-structs/
|
// https://blogs.msdn.microsoft.com/ericlippert/2008/05/14/mutating-readonly-structs/
|
||||||
protected FilterCursor _cursor;
|
protected FilterCursor _cursor;
|
||||||
protected IActionResult _result;
|
protected IActionResult? _result;
|
||||||
protected object _instance;
|
protected object? _instance;
|
||||||
|
|
||||||
public ResourceInvoker(
|
public ResourceInvoker(
|
||||||
DiagnosticListener diagnosticListener,
|
DiagnosticListener diagnosticListener,
|
||||||
|
|
@ -67,7 +68,7 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
_actionContextAccessor.ActionContext = _actionContext;
|
_actionContextAccessor.ActionContext = _actionContext;
|
||||||
var scope = _logger.ActionScope(_actionContext.ActionDescriptor);
|
var scope = _logger.ActionScope(_actionContext.ActionDescriptor);
|
||||||
|
|
||||||
Task task = null;
|
Task task;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
task = InvokeFilterPipelineAsync();
|
task = InvokeFilterPipelineAsync();
|
||||||
|
|
@ -77,13 +78,12 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
return Awaited(this, Task.FromException(exception), scope);
|
return Awaited(this, Task.FromException(exception), scope);
|
||||||
}
|
}
|
||||||
|
|
||||||
Debug.Assert(task != null);
|
|
||||||
if (!task.IsCompletedSuccessfully)
|
if (!task.IsCompletedSuccessfully)
|
||||||
{
|
{
|
||||||
return Awaited(this, task, scope);
|
return Awaited(this, task, scope);
|
||||||
}
|
}
|
||||||
|
|
||||||
Exception releaseException = null;
|
Exception? releaseException = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
ReleaseResources();
|
ReleaseResources();
|
||||||
|
|
@ -93,10 +93,10 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
releaseException = exception;
|
releaseException = exception;
|
||||||
}
|
}
|
||||||
|
|
||||||
Exception scopeException = null;
|
Exception? scopeException = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
scope.Dispose();
|
scope?.Dispose();
|
||||||
}
|
}
|
||||||
catch (Exception exception)
|
catch (Exception exception)
|
||||||
{
|
{
|
||||||
|
|
@ -120,7 +120,7 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
return Task.FromException(scopeException);
|
return Task.FromException(scopeException);
|
||||||
}
|
}
|
||||||
|
|
||||||
static async Task Awaited(ResourceInvoker invoker, Task task, IDisposable scope)
|
static async Task Awaited(ResourceInvoker invoker, Task task, IDisposable? scope)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
@ -135,7 +135,7 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
scope.Dispose();
|
scope?.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -204,7 +204,7 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
|
|
||||||
// The `state` is used for internal state handling during transitions between states. In practice this
|
// The `state` is used for internal state handling during transitions between states. In practice this
|
||||||
// means storing a filter instance in `state` and then retrieving it in the next state.
|
// means storing a filter instance in `state` and then retrieving it in the next state.
|
||||||
var state = (object)null;
|
var state = (object?)null;
|
||||||
|
|
||||||
// `isCompleted` will be set to true when we've reached a terminal state.
|
// `isCompleted` will be set to true when we've reached a terminal state.
|
||||||
var isCompleted = false;
|
var isCompleted = false;
|
||||||
|
|
@ -228,7 +228,7 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
return Task.FromException(ex);
|
return Task.FromException(ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
static async Task Awaited(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted)
|
static async Task Awaited(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object? state, bool isCompleted)
|
||||||
{
|
{
|
||||||
await lastTask;
|
await lastTask;
|
||||||
|
|
||||||
|
|
@ -269,7 +269,7 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Task Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
|
private Task Next(ref State next, ref Scope scope, ref object? state, ref bool isCompleted)
|
||||||
{
|
{
|
||||||
switch (next)
|
switch (next)
|
||||||
{
|
{
|
||||||
|
|
@ -868,7 +868,7 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
}
|
}
|
||||||
|
|
||||||
Debug.Assert(scope == Scope.Invoker);
|
Debug.Assert(scope == Scope.Invoker);
|
||||||
Rethrow(_resourceExecutedContext);
|
Rethrow(_resourceExecutedContext!);
|
||||||
|
|
||||||
goto case State.InvokeEnd;
|
goto case State.InvokeEnd;
|
||||||
}
|
}
|
||||||
|
|
@ -929,7 +929,7 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
{
|
{
|
||||||
var scope = Scope.Resource;
|
var scope = Scope.Resource;
|
||||||
var next = State.ResourceNext;
|
var next = State.ResourceNext;
|
||||||
var state = (object)null;
|
var state = (object?)null;
|
||||||
var isCompleted = false;
|
var isCompleted = false;
|
||||||
|
|
||||||
while (!isCompleted)
|
while (!isCompleted)
|
||||||
|
|
@ -943,7 +943,7 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
}
|
}
|
||||||
catch (Exception exception)
|
catch (Exception exception)
|
||||||
{
|
{
|
||||||
_resourceExecutedContext = new ResourceExecutedContextSealed(_resourceExecutingContext, _filters)
|
_resourceExecutedContext = new ResourceExecutedContextSealed(_resourceExecutingContext!, _filters)
|
||||||
{
|
{
|
||||||
ExceptionDispatchInfo = ExceptionDispatchInfo.Capture(exception),
|
ExceptionDispatchInfo = ExceptionDispatchInfo.Capture(exception),
|
||||||
};
|
};
|
||||||
|
|
@ -952,7 +952,7 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
Debug.Assert(_resourceExecutedContext != null);
|
Debug.Assert(_resourceExecutedContext != null);
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
|
|
||||||
static async Task Awaited(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted)
|
static async Task Awaited(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object? state, bool isCompleted)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
@ -965,7 +965,7 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
}
|
}
|
||||||
catch (Exception exception)
|
catch (Exception exception)
|
||||||
{
|
{
|
||||||
invoker._resourceExecutedContext = new ResourceExecutedContextSealed(invoker._resourceExecutingContext, invoker._filters)
|
invoker._resourceExecutedContext = new ResourceExecutedContextSealed(invoker._resourceExecutingContext!, invoker._filters)
|
||||||
{
|
{
|
||||||
ExceptionDispatchInfo = ExceptionDispatchInfo.Capture(exception),
|
ExceptionDispatchInfo = ExceptionDispatchInfo.Capture(exception),
|
||||||
};
|
};
|
||||||
|
|
@ -980,7 +980,7 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var next = State.ExceptionNext;
|
var next = State.ExceptionNext;
|
||||||
var state = (object)null;
|
var state = (object?)null;
|
||||||
var scope = Scope.Exception;
|
var scope = Scope.Exception;
|
||||||
var isCompleted = false;
|
var isCompleted = false;
|
||||||
|
|
||||||
|
|
@ -1002,7 +1002,7 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
return Task.FromException(ex);
|
return Task.FromException(ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
static async Task Awaited(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted)
|
static async Task Awaited(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object? state, bool isCompleted)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
@ -1029,7 +1029,7 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
{
|
{
|
||||||
var next = State.ResultBegin;
|
var next = State.ResultBegin;
|
||||||
var scope = Scope.Invoker;
|
var scope = Scope.Invoker;
|
||||||
var state = (object)null;
|
var state = (object?)null;
|
||||||
var isCompleted = false;
|
var isCompleted = false;
|
||||||
|
|
||||||
while (!isCompleted)
|
while (!isCompleted)
|
||||||
|
|
@ -1050,7 +1050,7 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
return Task.FromException(ex);
|
return Task.FromException(ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
static async Task Awaited(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted)
|
static async Task Awaited(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object? state, bool isCompleted)
|
||||||
{
|
{
|
||||||
await lastTask;
|
await lastTask;
|
||||||
|
|
||||||
|
|
@ -1067,7 +1067,7 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
{
|
{
|
||||||
var next = State.ResultBegin;
|
var next = State.ResultBegin;
|
||||||
var scope = Scope.Invoker;
|
var scope = Scope.Invoker;
|
||||||
var state = (object)null;
|
var state = (object?)null;
|
||||||
var isCompleted = false;
|
var isCompleted = false;
|
||||||
|
|
||||||
while (!isCompleted)
|
while (!isCompleted)
|
||||||
|
|
@ -1088,7 +1088,7 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
return Task.FromException(ex);
|
return Task.FromException(ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
static async Task Awaited(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted)
|
static async Task Awaited(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object? state, bool isCompleted)
|
||||||
{
|
{
|
||||||
await lastTask;
|
await lastTask;
|
||||||
|
|
||||||
|
|
@ -1099,7 +1099,7 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Task ResultNext<TFilter, TFilterAsync>(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
|
private Task ResultNext<TFilter, TFilterAsync>(ref State next, ref Scope scope, ref object? state, ref bool isCompleted)
|
||||||
where TFilter : class, IResultFilter
|
where TFilter : class, IResultFilter
|
||||||
where TFilterAsync : class, IAsyncResultFilter
|
where TFilterAsync : class, IAsyncResultFilter
|
||||||
{
|
{
|
||||||
|
|
@ -1122,7 +1122,7 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
{
|
{
|
||||||
if (_resultExecutingContext == null)
|
if (_resultExecutingContext == null)
|
||||||
{
|
{
|
||||||
_resultExecutingContext = new ResultExecutingContextSealed(_actionContext, _filters, _result, _instance);
|
_resultExecutingContext = new ResultExecutingContextSealed(_actionContext, _filters, _result!, _instance!);
|
||||||
}
|
}
|
||||||
|
|
||||||
state = current.FilterAsync;
|
state = current.FilterAsync;
|
||||||
|
|
@ -1132,7 +1132,7 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
{
|
{
|
||||||
if (_resultExecutingContext == null)
|
if (_resultExecutingContext == null)
|
||||||
{
|
{
|
||||||
_resultExecutingContext = new ResultExecutingContextSealed(_actionContext, _filters, _result, _instance);
|
_resultExecutingContext = new ResultExecutingContextSealed(_actionContext, _filters, _result!, _instance!);
|
||||||
}
|
}
|
||||||
|
|
||||||
state = current.Filter;
|
state = current.Filter;
|
||||||
|
|
@ -1186,7 +1186,7 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
_actionContext,
|
_actionContext,
|
||||||
_filters,
|
_filters,
|
||||||
resultExecutingContext.Result,
|
resultExecutingContext.Result,
|
||||||
_instance)
|
_instance!)
|
||||||
{
|
{
|
||||||
Canceled = true,
|
Canceled = true,
|
||||||
};
|
};
|
||||||
|
|
@ -1232,7 +1232,7 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
resultExecutingContext,
|
resultExecutingContext,
|
||||||
_filters,
|
_filters,
|
||||||
resultExecutingContext.Result,
|
resultExecutingContext.Result,
|
||||||
_instance)
|
_instance!)
|
||||||
{
|
{
|
||||||
Canceled = true,
|
Canceled = true,
|
||||||
};
|
};
|
||||||
|
|
@ -1309,13 +1309,13 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
{
|
{
|
||||||
if (_resultExecutedContext == null)
|
if (_resultExecutedContext == null)
|
||||||
{
|
{
|
||||||
_resultExecutedContext = new ResultExecutedContextSealed(_actionContext, _filters, result, _instance);
|
_resultExecutedContext = new ResultExecutedContextSealed(_actionContext, _filters, result!, _instance!);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
Rethrow(_resultExecutedContext);
|
Rethrow(_resultExecutedContext!);
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1331,7 +1331,7 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var next = State.ResultNext;
|
var next = State.ResultNext;
|
||||||
var state = (object)null;
|
var state = (object?)null;
|
||||||
var scope = Scope.Result;
|
var scope = Scope.Result;
|
||||||
var isCompleted = false;
|
var isCompleted = false;
|
||||||
while (!isCompleted)
|
while (!isCompleted)
|
||||||
|
|
@ -1345,7 +1345,7 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
}
|
}
|
||||||
catch (Exception exception)
|
catch (Exception exception)
|
||||||
{
|
{
|
||||||
_resultExecutedContext = new ResultExecutedContextSealed(_actionContext, _filters, _result, _instance)
|
_resultExecutedContext = new ResultExecutedContextSealed(_actionContext, _filters, _result!, _instance!)
|
||||||
{
|
{
|
||||||
ExceptionDispatchInfo = ExceptionDispatchInfo.Capture(exception),
|
ExceptionDispatchInfo = ExceptionDispatchInfo.Capture(exception),
|
||||||
};
|
};
|
||||||
|
|
@ -1355,7 +1355,7 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
|
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
|
|
||||||
static async Task Awaited(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted)
|
static async Task Awaited(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object? state, bool isCompleted)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
@ -1368,7 +1368,7 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
}
|
}
|
||||||
catch (Exception exception)
|
catch (Exception exception)
|
||||||
{
|
{
|
||||||
invoker._resultExecutedContext = new ResultExecutedContextSealed(invoker._actionContext, invoker._filters, invoker._result, invoker._instance)
|
invoker._resultExecutedContext = new ResultExecutedContextSealed(invoker._actionContext, invoker._filters, invoker._result!, invoker._instance!)
|
||||||
{
|
{
|
||||||
ExceptionDispatchInfo = ExceptionDispatchInfo.Capture(exception),
|
ExceptionDispatchInfo = ExceptionDispatchInfo.Capture(exception),
|
||||||
};
|
};
|
||||||
|
|
@ -1589,4 +1589,5 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
public AuthorizationFilterContextSealed(ActionContext actionContext, IList<IFilterMetadata> filters) : base(actionContext, filters) { }
|
public AuthorizationFilterContextSealed(ActionContext actionContext, IList<IFilterMetadata> filters) : base(actionContext, filters) { }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#nullable restore
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -695,10 +695,12 @@ namespace Microsoft.AspNetCore.Mvc
|
||||||
_selectingFirstCanWriteFormatter(logger, null);
|
_selectingFirstCanWriteFormatter(logger, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IDisposable ActionScope(this ILogger logger, ActionDescriptor action)
|
#nullable enable
|
||||||
|
public static IDisposable? ActionScope(this ILogger logger, ActionDescriptor action)
|
||||||
{
|
{
|
||||||
return logger.BeginScope(new ActionLogScope(action));
|
return logger.BeginScope(new ActionLogScope(action));
|
||||||
}
|
}
|
||||||
|
#nullable restore
|
||||||
|
|
||||||
public static void ExecutingAction(this ILogger logger, ActionDescriptor action)
|
public static void ExecutingAction(this ILogger logger, ActionDescriptor action)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -122,10 +122,12 @@ namespace Microsoft.AspNetCore.Mvc.ViewFeatures
|
||||||
"Skipping the execution of current filter as its not the most effective filter implementing the policy {FilterPolicy}.");
|
"Skipping the execution of current filter as its not the most effective filter implementing the policy {FilterPolicy}.");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IDisposable ViewComponentScope(this ILogger logger, ViewComponentContext context)
|
#nullable enable
|
||||||
|
public static IDisposable? ViewComponentScope(this ILogger logger, ViewComponentContext context)
|
||||||
{
|
{
|
||||||
return logger.BeginScope(new ViewComponentLogScope(context.ViewComponentDescriptor));
|
return logger.BeginScope(new ViewComponentLogScope(context.ViewComponentDescriptor));
|
||||||
}
|
}
|
||||||
|
#nullable restore
|
||||||
|
|
||||||
public static void ViewComponentExecuting(
|
public static void ViewComponentExecuting(
|
||||||
this ILogger logger,
|
this ILogger logger,
|
||||||
|
|
|
||||||
|
|
@ -93,6 +93,7 @@ namespace Microsoft.AspNetCore.Mvc.ViewComponents
|
||||||
await result.ExecuteAsync(context);
|
await result.ExecuteAsync(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#nullable enable
|
||||||
private async Task<IViewComponentResult> InvokeAsyncCore(ObjectMethodExecutor executor, ViewComponentContext context)
|
private async Task<IViewComponentResult> InvokeAsyncCore(ObjectMethodExecutor executor, ViewComponentContext context)
|
||||||
{
|
{
|
||||||
var component = _viewComponentFactory.CreateViewComponent(context);
|
var component = _viewComponentFactory.CreateViewComponent(context);
|
||||||
|
|
@ -168,6 +169,7 @@ namespace Microsoft.AspNetCore.Mvc.ViewComponents
|
||||||
return viewComponentResult;
|
return viewComponentResult;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#nullable restore
|
||||||
|
|
||||||
private static IViewComponentResult CoerceToViewComponentResult(object value)
|
private static IViewComponentResult CoerceToViewComponentResult(object value)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,73 +0,0 @@
|
||||||
{
|
|
||||||
"solution": {
|
|
||||||
"path": "Mvc.sln",
|
|
||||||
"projects": [
|
|
||||||
"test\\WebSites\\BasicWebSite\\BasicWebSite.csproj",
|
|
||||||
"test\\WebSites\\RoutingWebSite\\Mvc.RoutingWebSite.csproj",
|
|
||||||
"test\\WebSites\\RazorWebSite\\RazorWebSite.csproj",
|
|
||||||
"test\\WebSites\\FormatterWebSite\\FormatterWebSite.csproj",
|
|
||||||
"test\\WebSites\\ApiExplorerWebSite\\ApiExplorerWebSite.csproj",
|
|
||||||
"test\\WebSites\\VersioningWebSite\\VersioningWebSite.csproj",
|
|
||||||
"test\\WebSites\\TagHelpersWebSite\\TagHelpersWebSite.csproj",
|
|
||||||
"test\\WebSites\\FilesWebSite\\FilesWebSite.csproj",
|
|
||||||
"test\\WebSites\\ApplicationModelWebSite\\ApplicationModelWebSite.csproj",
|
|
||||||
"test\\WebSites\\HtmlGenerationWebSite\\HtmlGenerationWebSite.csproj",
|
|
||||||
"test\\WebSites\\ErrorPageMiddlewareWebSite\\ErrorPageMiddlewareWebSite.csproj",
|
|
||||||
"test\\WebSites\\XmlFormattersWebSite\\XmlFormattersWebSite.csproj",
|
|
||||||
"test\\WebSites\\ControllersFromServicesWebSite\\ControllersFromServicesWebSite.csproj",
|
|
||||||
"test\\WebSites\\ControllersFromServicesClassLibrary\\ControllersFromServicesClassLibrary.csproj",
|
|
||||||
"test\\WebSites\\CorsWebSite\\CorsWebSite.csproj",
|
|
||||||
"samples\\MvcSandbox\\MvcSandbox.csproj",
|
|
||||||
"test\\WebSites\\SimpleWebSite\\SimpleWebSite.csproj",
|
|
||||||
"test\\WebSites\\SecurityWebSite\\SecurityWebSite.csproj",
|
|
||||||
"test\\WebSites\\RazorPagesWebSite\\RazorPagesWebSite.csproj",
|
|
||||||
"benchmarks\\Microsoft.AspNetCore.Mvc.Performance\\Microsoft.AspNetCore.Mvc.Performance.csproj",
|
|
||||||
"test\\WebSites\\RazorBuildWebSite\\RazorBuildWebSite.csproj",
|
|
||||||
"test\\WebSites\\RazorBuildWebSite.Views\\RazorBuildWebSite.Views.csproj",
|
|
||||||
"Mvc.Analyzers\\src\\Microsoft.AspNetCore.Mvc.Analyzers.csproj",
|
|
||||||
"Mvc.Analyzers\\test\\Mvc.Analyzers.Test.csproj",
|
|
||||||
"test\\WebSites\\RazorPagesClassLibrary\\RazorPagesClassLibrary.csproj",
|
|
||||||
"shared\\Mvc.Views.TestCommon\\Microsoft.AspNetCore.Mvc.Views.TestCommon.csproj",
|
|
||||||
"Mvc.Api.Analyzers\\test\\Mvc.Api.Analyzers.Test.csproj",
|
|
||||||
"Mvc.Api.Analyzers\\src\\Microsoft.AspNetCore.Mvc.Api.Analyzers.csproj",
|
|
||||||
"test\\WebSites\\GenericHostWebSite\\GenericHostWebSite.csproj",
|
|
||||||
"Mvc\\src\\Microsoft.AspNetCore.Mvc.csproj",
|
|
||||||
"Mvc\\test\\Microsoft.AspNetCore.Mvc.Test.csproj",
|
|
||||||
"Mvc.Abstractions\\src\\Microsoft.AspNetCore.Mvc.Abstractions.csproj",
|
|
||||||
"Mvc.Abstractions\\test\\Microsoft.AspNetCore.Mvc.Abstractions.Test.csproj",
|
|
||||||
"Mvc.ApiExplorer\\src\\Microsoft.AspNetCore.Mvc.ApiExplorer.csproj",
|
|
||||||
"Mvc.ApiExplorer\\test\\Microsoft.AspNetCore.Mvc.ApiExplorer.Test.csproj",
|
|
||||||
"Mvc.Core\\src\\Microsoft.AspNetCore.Mvc.Core.csproj",
|
|
||||||
"Mvc.Core\\test\\Microsoft.AspNetCore.Mvc.Core.Test.csproj",
|
|
||||||
"Mvc.Cors\\src\\Microsoft.AspNetCore.Mvc.Cors.csproj",
|
|
||||||
"Mvc.Cors\\test\\Microsoft.AspNetCore.Mvc.Cors.Test.csproj",
|
|
||||||
"Mvc.DataAnnotations\\src\\Microsoft.AspNetCore.Mvc.DataAnnotations.csproj",
|
|
||||||
"Mvc.DataAnnotations\\test\\Microsoft.AspNetCore.Mvc.DataAnnotations.Test.csproj",
|
|
||||||
"Mvc.Formatters.Json\\src\\Microsoft.AspNetCore.Mvc.Formatters.Json.csproj",
|
|
||||||
"Mvc.Formatters.Xml\\src\\Microsoft.AspNetCore.Mvc.Formatters.Xml.csproj",
|
|
||||||
"Mvc.Formatters.Xml\\test\\Microsoft.AspNetCore.Mvc.Formatters.Xml.Test.csproj",
|
|
||||||
"Mvc.Localization\\src\\Microsoft.AspNetCore.Mvc.Localization.csproj",
|
|
||||||
"Mvc.Localization\\test\\Microsoft.AspNetCore.Mvc.Localization.Test.csproj",
|
|
||||||
"Mvc.Razor\\src\\Microsoft.AspNetCore.Mvc.Razor.csproj",
|
|
||||||
"Mvc.Razor\\test\\Microsoft.AspNetCore.Mvc.Razor.Test.csproj",
|
|
||||||
"Mvc.RazorPages\\src\\Microsoft.AspNetCore.Mvc.RazorPages.csproj",
|
|
||||||
"Mvc.RazorPages\\test\\Microsoft.AspNetCore.Mvc.RazorPages.Test.csproj",
|
|
||||||
"Mvc.TagHelpers\\src\\Microsoft.AspNetCore.Mvc.TagHelpers.csproj",
|
|
||||||
"Mvc.TagHelpers\\test\\Microsoft.AspNetCore.Mvc.TagHelpers.Test.csproj",
|
|
||||||
"Mvc.ViewFeatures\\src\\Microsoft.AspNetCore.Mvc.ViewFeatures.csproj",
|
|
||||||
"Mvc.ViewFeatures\\test\\Microsoft.AspNetCore.Mvc.ViewFeatures.Test.csproj",
|
|
||||||
"test\\Mvc.FunctionalTests\\Microsoft.AspNetCore.Mvc.FunctionalTests.csproj",
|
|
||||||
"test\\Mvc.IntegrationTests\\Microsoft.AspNetCore.Mvc.IntegrationTests.csproj",
|
|
||||||
"shared\\Mvc.TestDiagnosticListener\\Microsoft.AspNetCore.Mvc.TestDiagnosticListener.csproj",
|
|
||||||
"Mvc.Testing\\src\\Microsoft.AspNetCore.Mvc.Testing.csproj",
|
|
||||||
"shared\\Mvc.Core.TestCommon\\Microsoft.AspNetCore.Mvc.Core.TestCommon.csproj",
|
|
||||||
"Mvc.NewtonsoftJson\\src\\Microsoft.AspNetCore.Mvc.NewtonsoftJson.csproj",
|
|
||||||
"Mvc.NewtonsoftJson\\test\\Microsoft.AspNetCore.Mvc.NewtonsoftJson.Test.csproj",
|
|
||||||
"Mvc.Razor.RuntimeCompilation\\src\\Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.csproj",
|
|
||||||
"Mvc.Razor.RuntimeCompilation\\test\\Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.Test.csproj",
|
|
||||||
"test\\WebSites\\RazorBuildWebSite.PrecompiledViews\\RazorBuildWebSite.PrecompiledViews.csproj",
|
|
||||||
"Mvc.Components.Prerendering\\src\\Microsoft.AspNetCore.Mvc.Components.Prerendering.csproj",
|
|
||||||
"Mvc.Components.Prerendering\\test\\Microsoft.AspNetCore.Mvc.Components.Prerendering.Test.csproj"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -109,7 +109,6 @@ namespace MvcSandbox
|
||||||
factory
|
factory
|
||||||
.AddConsole()
|
.AddConsole()
|
||||||
.AddDebug();
|
.AddDebug();
|
||||||
factory.SetMinimumLevel(LogLevel.Trace);
|
|
||||||
})
|
})
|
||||||
.UseIISIntegration()
|
.UseIISIntegration()
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue