Torna indietro   Hardware Upgrade Forum > Software > Programmazione

OVHcloud Game Server, i server dedicati per giocatori (e non solo) alla prova
OVHcloud Game Server, i server dedicati per giocatori (e non solo) alla prova
OVHcloud ha recentemente arricchito la sua proposta di server dedicati con i Game Server, macchine pensate per ospitare i server di gioco. Compatibili con tutti i principali titoli e con prestazioni elevate grazie all'uso di processori AMD Ryzen 5 3600X, i Game Server di OVHcloud offrono un processo di installazione e configurazione semplice, caratteristiche di alto livello e prezzi concorrenziali
Honor MagicBook 14: il notebook best buy a 599€?
Honor MagicBook 14: il notebook best buy a 599€?
Un impatto estetico di sicuro effetto quello del notebook Honor MateBook 14, che riprende le caratteristiche della gamma Matebook D di Huawei distinguendosi nello stile. Il processore AMD Ryzen 5 3500U assicura valide prestazioni, mantenendo semrpe elevata la produttività tanto per il lavoro come per lo studio senza trascurare lo svago e l'intrattenimento, Un best buy a 599€ di listino
Molto più di un router: i FRITZX!Box di AVM integrano un centralino telefonico
Molto più di un router: i FRITZX!Box di AVM integrano un centralino telefonico
Diversi router della serie FRITZ!Box includono una funzione integrata di centralino telefonico che consente di gestire più numeri telefonici e più tipologie di dispositivi: analogici, ISDN, IP e anche smartphone, tramite un'app. Il PBX integrato include funzioni di segreteria, di deviazione della chiamata, e può essere anche interrogato a distanza, per non rischiare di perdere una chiamata importante
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 23-05-2020, 00:47   #1
robertino_salemi
Senior Member
 
L'Avatar di robertino_salemi
 
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 916
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.
__________________
robertino_salemi è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2020, 09:03   #2
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2510
Ciao,
ora non ho modo di provare direttamente, io procederei così:

1. Verifica dai developer tools del browser (nella scheda Net) che il messaggio dell'eccezione arrivi al client (dovrebbe essere nel body o in un qualche header della risposta).

2a. Se il messaggio arriva allora devi fare qualche correzione nel javascript. Non ho capito che metodo stai utilizzando per effettuare la richiesta (jQuery ajax?), guarderei la documentazione per capire dove dovresti trovare il body o gli header della risposta

2b. Se il messaggio non arriva allora devi fare una correzione lato server, forse il metodo che stai utilizzando non restituisce il messaggio al client (anche se mi sembra strano)
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2020, 17:32   #3
robertino_salemi
Senior Member
 
L'Avatar di robertino_salemi
 
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 916
Hai ragione, nella scheda Network del DevTools dovrebbe esserci, ma non trovo nulla...





Non c'è nulla neanche nel tab Response...
__________________

Ultima modifica di robertino_salemi : 25-05-2020 alle 18:41.
robertino_salemi è offline   Rispondi citando il messaggio o parte di esso
Old 27-05-2020, 07:54   #4
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2510
Però attenzione, lo status code che hai restituito lato server dovrebbe essere 500:
https://developer.mozilla.org/en-US/...TTP/Status/500

mentre il client ha ricevuto 406:
https://developer.mozilla.org/en-US/...TTP/Status/406

Da quello che leggo potrebbe essere dovuto al fatto che nella Request è specificato Accept:application/pdf (non si vede nel tuo screenshot ma provo a supporlo, dovrebbe essere nei Request Headers) e lato server in caso di errore non restituisci un application/pdf.
Come hai effettuato la richiesta ajax? Puoi postare l'intero snippet javascript?
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 27-05-2020, 14:53   #5
robertino_salemi
Senior Member
 
L'Avatar di robertino_salemi
 
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 916
Esatto, lo StatusCode è diverso e non mi spiego come mai.

Certo, ecco la chiamata Ajax:
Codice:
    $.ajax({
        type: "POST",
        url: url_with_params,
        headers: {
            'Authorization': 'Bearer ' + sessionStorage.getItem(JWTTokenName),
            'Content-Type': "application/json;charset=UTF-8"
        },
        // Seems like the only way to get access to the xhr object
        xhr: function () {
            var xhr = new XMLHttpRequest();
            xhr.responseType = 'blob'
            return xhr;
        },
        data: jsonData,
        cache: true,
        success: function (data, status, xhr) {
            var blob = new Blob([data], { type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" });

            var downloadUrl = URL.createObjectURL(blob);

            //Get fileName
            var headers = xhr.getAllResponseHeaders();
            var arr = headers.trim().split(/[\r\n]+/);
            // Create a map of header names to values
            var headerMap = {};
            arr.forEach(function (line) {
                var parts = line.split(': ');
                var header = parts.shift();
                var value = parts.join(': ');
                headerMap[header] = value;
            });
            var fileName = headerMap["content-disposition"];

            var a = document.createElement("a");
            a.href = downloadUrl;
            a.download = fileName;
            document.body.appendChild(a);
            a.click();
            document.body.removeChild(a);
        },
        error: function (err, type, httpStatus) {
            var failureMessage = 'Error occurred in ajax call ' + err.status + " - " + err.responseText + " - " + httpStatus;
			console.log(failureMessage);
        }
    });
__________________
robertino_salemi è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


OVHcloud Game Server, i server dedicati per giocatori (e non solo) alla prova OVHcloud Game Server, i server dedicati per gioc...
Honor MagicBook 14: il notebook best buy a 599€? Honor MagicBook 14: il notebook best buy a 599€?
Molto più di un router: i FRITZX!Box di AVM integrano un centralino telefonico Molto più di un router: i FRITZX!Box di A...
Sony ZV-1: RX100 si trasforma e diventa una videocamera per Youtuber e Vlog Sony ZV-1: RX100 si trasforma e diventa una vide...
Minecraft Dungeons sbarca su console e PC: la Recensione del dungeon crawler di Mojang Minecraft Dungeons sbarca su console e PC: la Re...
GeForce Now, nuova politica per scongiur...
Netatmo presenta la sua videocamera este...
ho.mobile abilita il VoLTE, ma solo ad a...
Gmail, arriva la barra laterale sul clie...
CEATEC: la fiera giapponese di tecnologi...
Motorola razr 5G, trapelati alcuni detta...
Mafia II: Definitive Edition scende a 20...
MotoGP 20 arriva anche su TIMGames sfrut...
Qualcomm presenta i nuovi prodotti Wi-Fi...
Asus 'copia' ASRock con APE: CPU Intel n...
Retrocompatibilità Xbox Series X:...
PC, smartphone e tablet: vendite a meno ...
Microsoft Edge nasconde un divertente gi...
Google Stadia, supporto alla risoluzione...
MSI, supporto ai Ryzen 4000 Zen 3 anche ...
3DMark
Dropbox
Chromium
Driver NVIDIA GeForce 446.14 WHQL
Radeon Software Adrenalin 2020 20.5.1
Radeon Software Adrenalin 2020 20.4.2
Avira Free Antivirus
Iperius Backup
IObit Uninstaller
IObit Software Updater
IObit Malware Fighter
PassMark BurnInTest Professional
PassMark BurnInTest Standard
K-Lite Codec Pack Update
K-Lite Mega Codec Pack
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 03:51.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Served by www1v