2011-10-30 3 views
1

Im en cours d'exécution d'un site mvc asp.net sur iis7, en utilisant iis express en dev et quand une exception se produit dans une de mes vues, le navigateur retourne quelque chose qui ressemble à binaire dans un éditeur de texte .asp.net erreur mvc ne montrant pas ysod

Il ne génère pas le ysod normal.

Quelqu'un at-il déjà vu cela?

Cheers, Byron

EDIT

Son liés à mon filtre d'action de compression. Il semble que la réponse ne soit pas 'décompressante' si une exception se produit dans la vue.

public class EnableCompression : ActionFilterAttribute { 

    public override void OnActionExecuting(ActionExecutingContext filterContext) { 

     HttpRequestBase request = filterContext.HttpContext.Request; 

     string acceptEncoding = request.Headers["Accept-Encoding"]; 

     if (string.IsNullOrEmpty(acceptEncoding)) return; 

     acceptEncoding = acceptEncoding.ToUpperInvariant(); 

     HttpResponseBase response = filterContext.HttpContext.Response; 

     if (acceptEncoding.Contains("GZIP")) { 
      response.AppendHeader("Content-encoding", "gzip"); 
      response.Filter = new GZipStream(response.Filter, CompressionMode.Compress); 
     } else if (acceptEncoding.Contains("DEFLATE")) { 
      response.AppendHeader("Content-encoding", "deflate"); 
      response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress); 
     } 
    } 
} 
+0

Avez-vous essayé le débogage? Passer votre code, ou au moins définir un point d'arrêt au début du code où vous pensez que cela provoque? –

+0

Hey, je ne suis pas après l'exception réelle, je me demande pourquoi, quand une exception est jeter lors du rendu d'un modèle de vue, il ne me montre pas l'écran jaune traditionnel – boz

Répondre

0

C'est parce que vous ne gérez pas tous les cas par défaut pour request.Headers ["Accept-Encoding"]. Vous avez un "if/else if" sans autre manipulation pour les autres cas. Voir toutes les valeurs possibles dans http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html. Ajoutez ensuite un gestionnaire par défaut pour les demandes qui ne sont pas détectées par votre if/else if. En outre, vous pouvez utiliser .ToLower et tester uniquement les valeurs en minuscules.

Questions connexes