Skip to content

Commit 1865c88

Browse files
committed
Feedback
1 parent 4ea16ef commit 1865c88

File tree

3 files changed

+21
-9
lines changed

3 files changed

+21
-9
lines changed

src/Components/Endpoints/src/RazorComponentEndpointInvoker.cs

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ private async Task RenderComponentCore(HttpContext context)
3636
{
3737
context.Response.ContentType = RazorComponentResultExecutor.DefaultContentType;
3838
var isErrorHandler = context.Features.Get<IExceptionHandlerFeature>() is not null;
39+
if (isErrorHandler)
40+
{
41+
Log.InteractivityDisabledForErrorHandling(_logger);
42+
}
3943
_renderer.InitializeStreamingRenderingFraming(context, isErrorHandler);
4044
EndpointHtmlRenderer.MarkAsAllowingEnhancedNavigation(context);
4145

@@ -44,7 +48,7 @@ private async Task RenderComponentCore(HttpContext context)
4448
var rootComponent = endpoint.Metadata.GetRequiredMetadata<RootComponentMetadata>().Type;
4549
var pageComponent = endpoint.Metadata.GetRequiredMetadata<ComponentTypeMetadata>().Type;
4650

47-
Log.BeginRenderComponent(_logger, rootComponent.Name, pageComponent.Name);
51+
Log.BeginRenderRootComponent(_logger, rootComponent.Name, pageComponent.Name);
4852

4953
// Metadata controls whether we require antiforgery protection for this endpoint or we should skip it.
5054
// The default for razor component endpoints is to require the metadata, but it can be overriden by
@@ -241,22 +245,25 @@ private string GetDebuggerDisplay()
241245

242246
public static partial class Log
243247
{
244-
[LoggerMessage(1, LogLevel.Debug, "Begin render root component '{componentType}' with page '{pageType}'.", EventName = "BeginRenderRootComponent")]
245-
public static partial void BeginRenderComponent(ILogger<RazorComponentEndpointInvoker> logger, string componentType, string pageType);
248+
[LoggerMessage(1, LogLevel.Debug, "Begin render root component '{componentType}' with page '{pageType}'.", EventName = nameof(BeginRenderRootComponent))]
249+
public static partial void BeginRenderRootComponent(ILogger<RazorComponentEndpointInvoker> logger, string componentType, string pageType);
246250

247-
[LoggerMessage(2, LogLevel.Debug, "The antiforgery middleware already failed to validate the current token.", EventName = "MiddlewareAntiforgeryValidationFailed")]
251+
[LoggerMessage(2, LogLevel.Debug, "The antiforgery middleware already failed to validate the current token.", EventName = nameof(MiddlewareAntiforgeryValidationFailed))]
248252
public static partial void MiddlewareAntiforgeryValidationFailed(ILogger<RazorComponentEndpointInvoker> logger);
249253

250-
[LoggerMessage(3, LogLevel.Debug, "The antiforgery middleware already succeeded to validate the current token.", EventName = "MiddlewareAntiforgeryValidationSucceeded")]
254+
[LoggerMessage(3, LogLevel.Debug, "The antiforgery middleware already succeeded to validate the current token.", EventName = nameof(MiddlewareAntiforgeryValidationSucceeded))]
251255
public static partial void MiddlewareAntiforgeryValidationSucceeded(ILogger<RazorComponentEndpointInvoker> logger);
252256

253-
[LoggerMessage(4, LogLevel.Debug, "The endpoint disabled antiforgery token validation.", EventName = "EndpointAntiforgeryValidationDisabled")]
257+
[LoggerMessage(4, LogLevel.Debug, "The endpoint disabled antiforgery token validation.", EventName = nameof(EndpointAntiforgeryValidationDisabled))]
254258
public static partial void EndpointAntiforgeryValidationDisabled(ILogger<RazorComponentEndpointInvoker> logger);
255259

256-
[LoggerMessage(5, LogLevel.Information, "Antiforgery token validation failed for the current request.", EventName = "EndpointAntiforgeryValidationFailed")]
260+
[LoggerMessage(5, LogLevel.Information, "Antiforgery token validation failed for the current request.", EventName = nameof(EndpointAntiforgeryValidationFailed))]
257261
public static partial void EndpointAntiforgeryValidationFailed(ILogger<RazorComponentEndpointInvoker> logger);
258262

259-
[LoggerMessage(6, LogLevel.Debug, "Antiforgery token validation succeeded for the current request.", EventName = "EndpointAntiforgeryValidationSucceeded")]
263+
[LoggerMessage(6, LogLevel.Debug, "Antiforgery token validation succeeded for the current request.", EventName = nameof(EndpointAntiforgeryValidationSucceeded))]
260264
public static partial void EndpointAntiforgeryValidationSucceeded(ILogger<RazorComponentEndpointInvoker> logger);
265+
266+
[LoggerMessage(7, LogLevel.Debug, "Error handling in progress. Interactive components are not enabled.", EventName = nameof(InteractivityDisabledForErrorHandling))]
267+
public static partial void InteractivityDisabledForErrorHandling(ILogger<RazorComponentEndpointInvoker> logger);
261268
}
262269
}

src/Components/Endpoints/src/Rendering/EndpointHtmlRenderer.Prerendering.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ internal partial class EndpointHtmlRenderer
1717

1818
protected override IComponent ResolveComponentForRenderMode([DynamicallyAccessedMembers(Component)] Type componentType, int? parentComponentId, IComponentActivator componentActivator, IComponentRenderMode renderMode)
1919
{
20+
if (_isHandlingErrors)
21+
{
22+
// Ignore the render mode boundary in error scenarios.
23+
return componentActivator.CreateInstance(componentType);
24+
}
2025
var closestRenderModeBoundary = parentComponentId.HasValue
2126
? GetClosestRenderModeBoundary(parentComponentId.Value)
2227
: null;

src/Components/Endpoints/src/Rendering/EndpointHtmlRenderer.Streaming.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ private void WriteComponentHtml(int componentId, TextWriter output, bool allowBo
216216

217217
ComponentEndMarker? endMarkerOrNull = default;
218218

219-
if (componentState.Component is SSRRenderModeBoundary boundary && !_isHandlingErrors)
219+
if (componentState.Component is SSRRenderModeBoundary boundary)
220220
{
221221
var marker = boundary.ToMarker(_httpContext, sequenceAndKey.Sequence, sequenceAndKey.Key);
222222
endMarkerOrNull = marker.ToEndMarker();

0 commit comments

Comments
 (0)