// 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);
        }
Ejemplo n.º 2
0
 // Token: 0x06000473 RID: 1139 RVA: 0x00018DCC File Offset: 0x00016FCC
 internal static bool CouldBePingRequest(WebException ex)
 {
     if (ex.Status != WebExceptionStatus.ProtocolError)
     {
         return(false);
     }
     if (ex.Response == null)
     {
         return(false);
     }
     if (WinRMHelper.IsPingRequest(ex))
     {
         if (ExTraceGlobals.VerboseTracer.IsTraceEnabled(1))
         {
             ExTraceGlobals.VerboseTracer.TraceDebug <string>(0L, "[WinRMHelper::CouldBePingRequest] ex.Response.Headers[WinRMInfo.PingHeaderKey] = {0}.", ex.Response.Headers["X-RemotePS-Ping"]);
         }
         return(false);
     }
     return(ex.Response is HttpWebResponse && ((HttpWebResponse)ex.Response).StatusCode == HttpStatusCode.InternalServerError);
 }