A cosa serve un file ashx??

giovedì 08 novembre 2012 - 20.35
Tag Elenco Tags  VB.NET

86Marco Profilo | Expert

Salve ragazzi.
mi sono imbattuto in una lezione di asp.net ed ho trovato un file con estensione .ashx di cui non ho mai sentito parlare.

Ho cercato di capire che tipo di file potesse essere ed a cosa serve in particolare ma non ho trovato molto.... sapete aiutarmi magari dandomi una spiegazione breve ma esaustiva?

Vi ringrazio.

bludev Profilo | Newbie

L'estensione ashx indica i cosiddetti "Generic Handler", degli endpoint asp.net in grado di accettare richieste HTTP e di rispondere con un output. Si usano per particolari esigenze, come per esempio:
- gestione delle richieste ajax da parte di uno script, con output di vario tipo (testo, json, xml, ...)
- generazione dinamica di contenuti normalmente statici (per esempio una immagine o un file)

Il generic handler eredita dalla classe IHttpHandler e implementa il metodo ProcessRequest. Attraverso l'oggetto context è possibile risalire a tutti gli oggetti disponibili in una pagina, quali Server, Request, Response eccetera.

Se in VS aggiungi un nuovo Generic Handler ad un progetto web, vedrai un codice minimo che è molto autoesplicativo e fa comprendere bene cosa è possibile fare.

---
Fabio Turrin - Bludev - http://www.bludev.it/

86Marco Profilo | Expert

Ciao Fabio e grazie della celere risposta.

Tuttavia vorrei chiedere se sei in possesso o conosci qualche link o altro che mi consenta di studiare bene a cosa serva questo tipo di file e come utilizzarlo.

Grazie mille!! :-)

bludev Profilo | Newbie

Prova a vedere a questo link:
http://msdn.microsoft.com/en-us/library/bb398986(v=vs.100).aspx

---
Fabio Turrin - Bludev - http://www.bludev.it/

86Marco Profilo | Expert

Ok bene o male ho capito... mi ci metto un pò a lavoro... un ultima domanda se posso.

Mi stavo cimentando con questo tipo di file in un classico Sito Web vuoto.

Mi trovo in questa situazione:

165x182 10Kb


All'interno del file Handler.ashx ho il seguente codice: (quello predefinito di vstudio)

Imports System
Imports System.Web

Public Class Handler : Implements IHttpHandler

Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
context.Response.ContentType = "text/plain"
context.Response.Write("Hello World")
End Sub

Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
Return False
End Get
End Property

End Class

Successivamente registro il tutto nel webconfig:

<httpHandlers>
<add path="Default.aspx" verb="*" type="Handler" />
</httpHandlers>

Perchè mi esce fuori questo errore??? NON LO CAPISCO PROPRIO :(


736x350 21Kb


Mi sapresti aiutare??

Grazie veramente tanto per la tua disponibilità!

bludev Profilo | Newbie

Non devi registrare nulla nel web.config, basta solo chiamare il servizio dalla pagina html.
---
Fabio Turrin - Bludev - http://www.bludev.it/

86Marco Profilo | Expert

ed in che modo?
se volessi che nel caso specifico "Hello World" mi comparisse ogni qualvolta apro una pagina .aspx?

bludev Profilo | Newbie

Se per esempio il tuo generic handler fornisse una immagine generata dinamicamente, basterebbe che in una tua pagina aspx ci fosse qualcosa tipo:
<img src="myhander.ashx" alt="..." />

Quest'altro esempio effettua una chiamata asincrona con jquery, con dati restituiti in formato json:
$.ajax({ url: '../services/sendmessage.ashx', dataType: 'json', type: 'POST', data: { action: 'send', data_name: $('#data_name').val(), data_company: $('#data_company').val(), //... }, success: function (data) { if (data.Result == 0) { $('#data_name').val(''); $('#data_company').val(''); //... } }, error: function (jqXHR, textStatus, errorThrown) { //... } });
---
Fabio Turrin - Bludev - http://www.bludev.it/

86Marco Profilo | Expert

Grazie Fabio!
accetto la tua risposta...

Sei stato gentilissimo ed utilissimo... se non è un problema vorrei proporti un altro post che ho appena pubblicato
http://www.dotnethell.it/forum/messages.aspx?ThreadID=42028

Non mi raccapezzo su un altro problema.

Ad ogni modo te ne sono grato,

Ciao e a presto
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5