Retour Mvc.JsonResult plus des réponses.StatusCode

Projet: ASP net MVC 4 fonctionnant sous .net framework 4.0:

Lors de l'exécution d'une application sous visual studio 2010 express (ou déployé et exécuté sous IIS 7.5 sur ma machine locale) le (pseudo -) résultat d'une action fonctionne comme prévu

[HttpPost]
public ActionResult PostWord(Model model)
{
   ....
   Response.StatusCode = 400;
   Return new JsonResult { data = new {fieldName = "Word", error = "Not really a word!" } };

(et j'ai attribué ContentType et ContentEncoding propriétés de la JsonResult objet, avec aucune différence dans le comportement)

Lorsque le déployable est déplacé sur un hébergeur (à l'aide de IIS 7), firebug me dit que la réponse est comme prévu (400), mais il n'y a pas de JSON dans la réponse (c'est à dire il n'y a pas de texte de tout type). Si je supprime la ligne

Response.StatusCode = 400;

de l'action, le JSON est parfaitement formé dans la réponse, mais bien sûr, le code d'état de réponse 200 (OK), ce qui interfère avec la consommation de javascript et appropriée de l'appel de fonction.

Des pensées sur ce qui pourrait se passer et comment résoudre ce problème? Merci

  • Pourquoi voulez-vous retourner à 400? N'est-ce pas juste une page d'erreur avec un message d'erreur amical
  • stackoverflow.com/questions/6123425/... je devrais peut-être faire les choses différemment, mais JSON est retourné, peu importe - le code de réponse donne à la publication de la fonction d'information pour savoir quoi faire avec le JSON. 200 signifie pour moi la base de données de mise à jour comme demandé.
  • Je voudrais vérifier le champ erreur dans le JSON au lieu de le code de statut http
  • IIS7 cache détaillée des messages d'erreur par défaut, si vous n'obtenez pas de contenu lorsqu'une erreur est renvoyée. Essayez de changer la iss7 setup pour retourner des messages d'erreur détaillés et voir si cela fonctionne
  • la vérification de JSON au lieu de code d'état - architecture actuelle = tout bon, de retour partialview (ie html), ou, si tous les problèmes - décrire les problèmes en JSON. J'aurais essayer et analyser le code html dans un bloc try/catch de vérifier qu'une erreur, et puis si c'est du html, pas de savoir si c'est une bonne réponse ou une page d'erreur personnalisée servi; plutôt que d'utiliser la très utile onError & onSuccess discrète ajax attributs. Comme pour les erreurs - j'ai Elmah en cours d'exécution. pas d'erreurs sont enregistrées, la réponse est vide.
  • Il pourrait être un problème avec IIS erreurs Personnalisées. Peut-être essayer le réglage de Response.TrySkipIisCustomErrors = true; lien

InformationsquelleAutor Brent | 2013-06-19