// Token: 0x06000380 RID: 896 RVA: 0x00013F04 File Offset: 0x00012104 private bool TryGetUpdatedBufferToSend(ArraySegment <byte> buffer, out byte[] updatedBuffer, out string failureHint) { HttpContext context = base.RequestContext.HttpContext; updatedBuffer = null; failureHint = null; if (context.Response == null) { failureHint = "Response Null"; return(false); } int statusCode = context.Response.StatusCode; if (statusCode < 400) { if (ExTraceGlobals.VerboseTracer.IsTraceEnabled(1)) { ExTraceGlobals.VerboseTracer.TraceDebug <int, int>((long)this.GetHashCode(), "[RpsOutDataResponseStreamProxy::TryGetUpdatedBufferToSend] Context={0}, StatusCode={1}.", base.RequestContext.TraceContext, statusCode); } return(false); } if (WinRMHelper.DiagnosticsInfoHasBeenWritten(context.Response.Headers)) { if (ExTraceGlobals.VerboseTracer.IsTraceEnabled(1)) { ExTraceGlobals.VerboseTracer.TraceDebug <int>((long)this.GetHashCode(), "[RpsOutDataResponseStreamProxy::TryGetUpdatedBufferToSend] Context={0}, diagnostics info has been written.", base.RequestContext.TraceContext); } failureHint = "BeenWritten"; return(false); } if (WinRMHelper.TryInsertDiagnosticsInfo(buffer, () => WinRMHelper.GetDiagnosticsInfo(context), out updatedBuffer, out failureHint, delegate(string winRMFaultMessage) { RequestDetailsLoggerBase <RequestDetailsLogger> .SafeAppendGenericInfo(this.RequestContext.Logger, "WinRMFaultMessage", winRMFaultMessage); WinRMInfo.SetWSManFailureCategory(context.Response.Headers, winRMFaultMessage); })) { WinRMHelper.SetDiagnosticsInfoWrittenFlag(context.Response.Headers); return(true); } return(false); }
private void OnEndRequest(object sender, EventArgs e) { HttpContext httpContext = HttpContext.Current; HttpResponse response = httpContext.Response; if (response == null) { return; } RequestDetailsLogger current = RequestDetailsLoggerBase <RequestDetailsLogger> .GetCurrent(httpContext); RequestDetailsLoggerBase <RequestDetailsLogger> .SafeAppendGenericInfo(current, "OnEndRequest.Start.ContentType", response.ContentType); if (response.Headers["X-RemotePS-RevisedAction"] != null) { RequestDetailsLoggerBase <RequestDetailsLogger> .SafeSetLogger(current, HttpProxyMetadata.ProtocolAction, response.Headers["X-RemotePS-RevisedAction"]); } bool flag = httpContext.Items.Contains("X-HeaderPreSent") && (bool)httpContext.Items["X-HeaderPreSent"]; if (flag) { RequestDetailsLoggerBase <RequestDetailsLogger> .SafeAppendGenericInfo(current, "FriendlyError", "Skip-HeaderPreSent"); return; } try { int statusCode = response.StatusCode; int num; if (WinRMHelper.TryConvertStatusCode(statusCode, out num)) { ExTraceGlobals.VerboseTracer.TraceDebug <int, int>((long)this.GetHashCode(), "[RpsFriendlyErrorModule::OnEndRequest]: Convert status code from {0} to {1}.", statusCode, num); response.StatusCode = num; RequestDetailsLoggerBase <RequestDetailsLogger> .SafeSetLogger(current, ServiceCommonMetadata.HttpStatus, statusCode); } if (statusCode >= 400 && !"Ping".Equals(response.Headers["X-RemotePS-Ping"], StringComparison.OrdinalIgnoreCase) && !"Possible-Ping".Equals(response.Headers["X-RemotePS-Ping"], StringComparison.OrdinalIgnoreCase)) { response.ContentType = "application/soap+xml;charset=UTF-8"; if (!WinRMHelper.DiagnosticsInfoHasBeenWritten(response.Headers)) { string diagnosticsInfo = WinRMHelper.GetDiagnosticsInfo(httpContext); ExTraceGlobals.VerboseTracer.TraceDebug <int, string>((long)this.GetHashCode(), "[RpsFriendlyErrorModule::OnEndRequest]: Original Status Code: {0}, Append diagnostics info: {1}.", statusCode, diagnosticsInfo); if (statusCode == 401) { response.Output.Write(diagnosticsInfo + HttpProxyStrings.ErrorAccessDenied); } else { response.Output.Write(diagnosticsInfo); } RequestDetailsLoggerBase <RequestDetailsLogger> .SafeAppendGenericInfo(current, "FriendlyError", "HttpModule"); } } } catch (Exception ex) { ExTraceGlobals.VerboseTracer.TraceError <Exception>((long)this.GetHashCode(), "[RpsFriendlyErrorModule::OnEndRequest]: Exception = {0}", ex); RequestDetailsLoggerBase <RequestDetailsLogger> .SafeAppendGenericError(current, "RpsFriendlyErrorModule.OnEndRequest", ex.Message); } finally { RequestDetailsLoggerBase <RequestDetailsLogger> .SafeAppendGenericInfo(current, "OnEndRequest.End.ContentType", response.ContentType); } }
// Token: 0x060006F3 RID: 1779 RVA: 0x00028E60 File Offset: 0x00027060 protected override void ExposeExceptionToClientResponse(Exception ex) { if (!WinRMHelper.FriendlyErrorEnabled.Value) { base.ExposeExceptionToClientResponse(ex); return; } if (ex is WebException) { WebException ex2 = (WebException)ex; if (WinRMHelper.IsPingRequest(ex2)) { if (ExTraceGlobals.VerboseTracer.IsTraceEnabled(1)) { ExTraceGlobals.VerboseTracer.TraceDebug <int>((long)this.GetHashCode(), "[RemotePowerShellProxyRequestHandler::ExposeExceptionToClientResponse]: Context={0}, Ping found.", base.TraceContext); } RequestDetailsLoggerBase <RequestDetailsLogger> .SafeSetLogger(base.Logger, 21, "Ping"); base.ClientResponse.Headers["X-RemotePS-Ping"] = "Ping"; return; } if (WinRMHelper.CouldBePingRequest(ex2)) { if (ExTraceGlobals.VerboseTracer.IsTraceEnabled(1)) { ExTraceGlobals.VerboseTracer.TraceDebug <int>((long)this.GetHashCode(), "[RemotePowerShellProxyRequestHandler::ExposeExceptionToClientResponse]: Context={0}, Could be Ping request.", base.TraceContext); } base.ClientResponse.Headers["X-RemotePS-Ping"] = "Possible-Ping"; return; } if (ex2.Status != WebExceptionStatus.ProtocolError) { WinRMInfo.SetFailureCategoryInfo(base.ClientResponse.Headers, 3, ex2.Status.ToString()); } if (ex2.Response != null) { string text = ex2.Response.Headers["X-BasicAuthToOAuthConversionDiagnostics"]; if (!string.IsNullOrWhiteSpace(text)) { base.ClientResponse.Headers["X-BasicAuthToOAuthConversionDiagnostics"] = text + " "; } } } if (ex is HttpProxyException && !string.IsNullOrWhiteSpace(ex.Message) && !WinRMHelper.DiagnosticsInfoHasBeenWritten(base.ClientResponse.Headers)) { WinRMInfo.SetFailureCategoryInfo(base.ClientResponse.Headers, 3, ex.GetType().Name); string diagnosticsInfo = WinRMHelper.GetDiagnosticsInfo(base.HttpContext); if (ExTraceGlobals.VerboseTracer.IsTraceEnabled(1)) { ExTraceGlobals.VerboseTracer.TraceDebug <int, string>((long)this.GetHashCode(), "[RemotePowerShellProxyRequestHandler::ExposeExceptionToClientResponse]: Context={0}, Write Message {1} to client response.", base.TraceContext, ex.Message); } WinRMHelper.SetDiagnosticsInfoWrittenFlag(base.ClientResponse.Headers); RequestDetailsLoggerBase <RequestDetailsLogger> .SafeAppendGenericInfo(base.Logger, "FriendlyError", "ExposeException"); base.ClientResponse.Write(diagnosticsInfo + ex.Message); return; } base.ExposeExceptionToClientResponse(ex); }