Hin und wieder, wenn ich meine Anwendung ausführe, erhalte ich wirklich "WIRKLICH" seltsame Zeichen in meiner Ausgabe anstelle der entsprechenden Seite. Jetzt weiß ich, dass dies aufgrund eines Fehlers ist, aber leider der Fehler nicht präsentieren es ist selbst, sondern produziert nur seltsame Zeichen.
Hier ist ein Beispiel für einen vollständigen Seitenquelltext.
I%&/m{JJt
$@iG#) eVe]f@{{;N'? \fdlJ !?~|? "Ey')=y6hurjfIU<[2O2_]i]lg~O,[fWyq1o-zQS iUVIMz>EV_Z=JTfZgirk ZPW4,KOeSy/m^+E eBc jw,VuQ$n:@]uC_X_E^dTm[-;wvVrMJYyuYP2uCw}V|WId \0 >mh%yi)XdjUSzx^Wv$G^Oqq{.0=8fy6?.r~;[Bt~/Kz|-WQ&4BQ4oux|wrtLK$)Ms.4-.4]>]7!4IZcM;N_ye_q%LCPE9ejJ[^fe1rpuM3=BÈ,HYszST?} kpl_d/S[V "p}Jpq^!Z<5jWdwcO0 O/hjva}JyEzAh@45ee4?euvNCbzE!UYXsl#?}m/u IO2[Lfy5:)fM(Q})!dt|<
PO$?=< ?/q>b7^ (={ZY}u=8uJDcvtO/ 1ev}RfM3/~h -}:a \lZ <[/Rv5K(FCb{;?{{;?{^4- R|>[6:psFA7ehU+R>0{FI;wœ2Jir>po?j2 ]mU1{J/,Cp^Wjm$0^7d:nVd+t9c-x.Ww~3A9v-M/=>R|wyY?8{N #7 '/+UIJafyvx]x}?~1su !p] 4/i]5y IA^UT_{?0=~e "pinrk[z{#.s@#M8| GCYQ7zm/z(>>97:EGNg7?=-19irz7vi4x76v>zv0~3zn8]/H\ wq?9k~3}37G:~nq}y #6)2 \lMs p^\@Vi3Rr'UcPDfhat:DcE88UH7j*_Tm4U]|yYe 7'NJl,
Das habe ich bei Webformularen noch nie erlebt.
EDIT:
Ich habe heute einige Tests durchgeführt und dabei einige interessante Dinge gefunden. Erstens warf die App eine Null Reference Exception (500). Zweitens sah der lokale Debugger den Fehler und warf sofort einen gelben Bildschirm des Todes aus. Der fehlerhafte Text wurde auf dem Staging-Server angezeigt, auf dem derzeit ein Release-Build läuft.
Also im Grunde 500 Fehler auf Release-Builds mit customErrors aus auf meinem Staging-Server wirft CrAzY-Zeichen statt anmutig auf den gelben Bildschirm des Todes fehlschlagen.
EDIT 2:
Wie in der Antwort von @Esteban beschrieben, ist hier mein Kompressionsfilter
Namespace Filters
Public Class CompressFilter : Inherits ActionFilterAttribute
''' <summary>
''' GZip compresses each Action when loaded. This satisfies YSlow and
''' PageSpeed.
''' </summary>
''' <param name="filterContext">The filter context.</param>
Public Overrides Sub OnActionExecuting(ByVal filterContext As ActionExecutingContext)
Dim request As HttpRequestBase = filterContext.HttpContext.Request
Dim acceptEncoding As String = request.Headers("Accept-Encoding")
If String.IsNullOrEmpty(acceptEncoding) Then
Return
End If
acceptEncoding = acceptEncoding.ToUpperInvariant()
Dim response As HttpResponseBase = filterContext.HttpContext.Response
If acceptEncoding.Contains("GZIP") Then
response.AppendHeader("Content-encoding", "gzip")
response.Filter = New GZipStream(response.Filter, CompressionMode.Compress)
ElseIf acceptEncoding.Contains("DEFLATE") Then
response.AppendHeader("Content-encoding", "deflate")
response.Filter = New DeflateStream(response.Filter, CompressionMode.Compress)
End If
End Sub
End Class
End Namespace
Ich setze diesen Filter global auf jeden Controller über einen Base Controller. Die Seite läuft ganz gut, wenn es keine anderen 500 Fehler, aber wenn ich einen 500-Fehler-Peek es ist hässlich Kopf, ich bekomme die funky Zeichen.
Außerdem habe ich manchmal keinen Fehler auf meinem Entwicklungsserver, aber auf dem Staging-Server tritt ein Fehler auf. Dies geschah vor kurzem, als ich die aktualisierte Bibliothek nicht auf dem Staging-Server hatte, sie aber auf meinem Entwicklungsrechner vorhanden war. Ich kann die Fehler im Ereignisprotokoll sehen, aber ich kann sie nicht auf der Webseite sehen... selbst wenn ich Custom Errors auf Off
.
EDIT 3:
Ok, jetzt haben wir herausgefunden, dass dieser Fehler kommt, weil meine <CompressionFilter()>
dekomprimiert den Stream nicht, wenn ein 500-Fehler ausgegeben wird. Ich muss herausfinden, wie ich meine Ausgabe dekomprimieren kann, egal was passiert.