Sono nuovo di asp.net 4.5 async e sto correndo nel seguente con la chiamata response.redirect all'interno di un metodo asincrono. Il problema è che la risposta "si blocca" Qualcun altro ha riscontrato problemi simili con il tentativo di reindirizzamento con async? Questo codice funzionerà in un nuovo progetto, ma non funziona con una nuova pagina nel nostro codice esistente. Mi sono assicurato di svuotare tutto ciò che potevo dal nostro web.config e rimosso la nostra pagina principale. Colpire un muro di mattoni ... qualche idea? Grazie!Response.Redirect problema con Asp.net async
protected void Page_Load(object sender, EventArgs e)
{
RegisterAsyncTask(new PageAsyncTask(PageLoadAsync));
}
private async Task PageLoadAsync()
{
var data = await GetData();
if (data == HttpStatusCode.OK)
Response.Redirect("http://www.google.com");
}
private async Task<HttpStatusCode> GetData()
{
using (var client = new HttpClient())
{
var response = await client.GetAsync("https://www.google.com");
return response.StatusCode;
}
}
Non penso che sia possibile eseguire 'Redirect' su thread asincrono –
Non vedo perché sia necessario async, è comunque necessario attendere che HttpClient risponda prima di terminare il caricamento/rendering della pagina. E non stai facendo più cose allo stesso tempo. btw: se hai una connessione internet, google funzionerà sempre;) –
Ha bisogno di async perché sta facendo un task I/O intensivo (inviando una richiesta HTTP a una risorsa remota). Immagina che questa risorsa impieghi molto tempo per rispondere. Durante questo periodo, il thread di lavoro ASP.NET verrà compromesso. Ora immagina che questo endpoint sia colpito da 200 utenti allo stesso tempo => il tuo sito morirà perché non ci saranno thread di lavoro disponibili per soddisfare le richieste. Ecco perché è estremamente importante utilizzare async in questo caso. –