IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET MVC Discussion :

Changer le StatusCode de la Response après que le traitement de la request


Sujet :

ASP.NET MVC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Expert technique .NET
    Inscrit en
    Août 2007
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Expert technique .NET

    Informations forums :
    Inscription : Août 2007
    Messages : 272
    Par défaut Changer le StatusCode de la Response après que le traitement de la request
    Bonjour,

    J'ai un truc un peu tricky à faire : je suis dans une action d'un controller, et pour diverses raisons, je dois réécrire le contenu de la réponse HTTP après le traitement de la requête.
    Ca c'est bon, j'ai réussi à m'en sortir à l'aide du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    HttpContext.Response.Buffer = false;
    HttpContext.AddOnRequestCompleted(callbackFunction);
    Et lorsque ma réponse est prêt, je repasse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HttpContext.Response.Buffer = true;
    pour envoyer la réponse.

    Le problème, c'est qu'en cas d'échec du traitement, je dois aussi changer le StatusCode, et là, ça ne fonctionne pas, j'ai toujours un 200.

    Auriez-vous une idée, SVP ?

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2014
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2014
    Messages : 153
    Par défaut
    En core 1.0
    Dans ton controller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
       public class StatusCodeController : Controller
        {
            private readonly ILogger<HomeController> _logger;
     
            public StatusCodeController(ILogger<HomeController> logger)
            {
                _logger = logger;
            }
     
            // GET: /<controller>/
            [HttpGet("/StatusCode/{statusCode}")]
            public IActionResult Index(int statusCode)
            {
                var reExecute = HttpContext.Features.Get<IStatusCodeReExecuteFeature>();
     
                _logger.LogInformation($"Unexpected Status Code: {statusCode}, OriginalPath: {reExecute.OriginalPath}");
     
                return View(statusCode);
     
            }
        }
    Et ta vue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    @model int
    @{
        Layout = "_Layout";
    }
    @{
     
        var statusCode = Model;
     
        var statusmessage = "";
     
        switch (statusCode)
     
        {
     
            case 400:
     
                statusmessage = "Bad request: The request cannot be fulfilled due to bad syntax";
     
                break;
     
            case 403:
     
                statusmessage = "Interdit";
     
                break;
     
            case 404:
     
                statusmessage = "Page non trouvée";
     
                break;
     
            case 408:
     
                statusmessage = "The server timed out waiting for the request";
     
                break;
     
            case 500:
     
                statusmessage = "Internal Server Error - server was unable to finish processing the request";
     
                break;
     
            default:
     
                statusmessage = "That’s odd... Something we didn't expect happened";
     
                break;
     
        }
     
    }
     
    <div class="jumbotron">
     
        <h2>Erreur @Model</h2>
     
        <h3>@statusmessage</h3>
     
    </div>
    Et dans la méthode Configure() du Startup :

    app.UseStatusCodePagesWithReExecute("/StatusCode/{0}");

Discussions similaires

  1. Réponses: 7
    Dernier message: 18/10/2016, 02h09
  2. creer une nstance apres que le produit soit installe ?!
    Par ChristopheOce dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 03/09/2007, 16h13
  3. changer la taille d'une plage après l'avoir nommer
    Par b.amine dans le forum Excel
    Réponses: 1
    Dernier message: 12/04/2007, 15h39
  4. Réponses: 2
    Dernier message: 18/07/2006, 18h53
  5. changer un texte dans la page après action dans un popup
    Par JackBeauregard dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 29/06/2006, 18h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo