Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di exFelino
    Registrato dal
    Jul 2014
    residenza
    Aci Catena (CT)
    Messaggi
    651

    ASP.net MVC: Exception e chiamata AJAX

    Ciao a tutti,
    sto realizzando un'applicazione basata su ASP.net MVC.

    Tramite Ajax effettuo la chiamata ad diversi metodo, esempio può essere:
    codice:
    public ActionResult MyMethod(DateTime ref_date) { 
                try
                {
                    //code
    
                    return new FileContentResult(stream.ToArray(), "application/pdf");
                }
                catch (Exception ex)
                {
                    return StatusCode((int)HttpStatusCode.InternalServerError, ex.Message);
                }
    }
    Se l'eccezione non scatta, nella success della chiamata ajax eseguo la procedura desiderata...

    Se viene generata l'eccezione, scatta l'error della chiamata ajax, ma non riesco a catturare in alcun modo l'ex.Message:
    codice:
    error: function (err, type, httpStatus) {
        console.log(err);
        var failureMessage = 'Error occurred in ajax call ' + err.status + " - " + err.responseText + " - " + httpStatus;
        console.log(failureMessage);
        console.log(err.responseText);
    }
    Se ad esempio il metodo va in eccezione perchè il file usato come modello è lockato da un altro processo, nell'eccezione del metodo lo vedo, nella chiamata Ajax no, non riesco a catturarlo.

    Probabilmente sbaglio il tipo di ritorno in caso di exception?

    Grazie.
    Ultima modifica di exFelino; 23-05-2020 a 01:46

  2. #2
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,733
    eccezione a parte, forse la grandezza del json di default è troppo piccola, trattandosi di files

    <appSettings>
    <add key="aspnet:MaxJsonDeserializerMembers" value="150000" />
    </appSettings>


    comunque l'eccezione la vedi dal debugger del browser...
    Ultima modifica di djciko; 23-05-2020 a 12:15

  3. #3
    Utente di HTML.it L'avatar di exFelino
    Registrato dal
    Jul 2014
    residenza
    Aci Catena (CT)
    Messaggi
    651
    Il file viene generato senza problemi, qualunque sia la dimensione.

    La stringa del messaggio dell'eccezione non riesco a catturare...

  4. #4
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,733
    non capisco quale eccezione, se va tutto a buon fine...

    comunque, hai provato a guardare negli errori della consolle di debug ? (f12)

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    1,250
    Ciao,
    lascia fare alla Exception il suo lavoro, non catturarla nel metodo del server, Quando andrà in errore vedrai che la catturi sul client

  6. #6
    Utente di HTML.it L'avatar di exFelino
    Registrato dal
    Jul 2014
    residenza
    Aci Catena (CT)
    Messaggi
    651
    Si, sia nel body della risposta, non c'è nulla...

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    1,250
    Cerca meglio...
    Immagine.pngImmagine2.png

    responseText restituisce una pagina, alcuni dettagli:
    codice:
    <div id="exceptionDetail1" class="rawExceptionDetails">
                                    <pre class="rawExceptionStackTrace">System.Exception: Ops!
       at ...
    Ultima modifica di U235; 27-05-2020 a 17:37

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    1,250
    mmm ho l'impressione che i miei messaggi non si vedano in alcuni casi. anche ora (prima di postare questo) non si vede come ultima risposta e rileggendo mi da l'impressione che exFelino non abbia letto la mia risposta sopra e stesse rispondendo a djciko.

    in ogni caso ne approfitto per aggiungere che se invece vuoi proprio gestire a mano la risposta intercettando l'eccezione sul server, puoi elaborarla così (testato in net core):
    codice:
    try
                {
                    throw new Exception();
                }
                catch (Exception ex)
                {
                     Response.StatusCode = (int)HttpStatusCode.InternalServerError;               
                     return StatusCode(Response.StatusCode, "Nooooo il file è bloccato!");
                }
    In questo caso respondText ti restituisce solo quello che vuoi tu (es: "Nooooo il file è bloccato!").
    Ultima modifica di U235; 27-05-2020 a 19:06

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved.