Ho scritto un semplice gestore:ASP.NET gestore non in esecuzione su IIS7
public class ImageHandler : IHttpHandler, IRequiresSessionState
{
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext context)
{
byte[] imgData = context.Session["Data"] as byte[];
if (imgData != null)
{
context.Response.CacheControl = "no-cache";
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
context.Response.ContentType = "image/png";
context.Response.BinaryWrite(imgData);
context.Response.Flush();
}
}
}
E impostare il web.config
:
<system.web>
<httpHandlers>
<add verb="GET" path="image.png" type="TestWeb.Handlers.ImageHandler, TestWeb" />
</httpHandlers>
</system.web>
<system.webServer>
<handlers>
<add name="Image" verb="GET" path="image.png" type="TestWeb.Handlers.ImageHandler, TestWeb" />
</handlers>
</system.webServer>
- Se eseguo il codice permettendo VS avviare una nuovo servizio IIS e aprire una nuova scheda raggiunge il punto di interruzione sul gestore.
- Se si imposta
don't open a page. Wait for request from an external application
, lo non raggiunge mai l'handler.
Non è solo il punto di interruzione, nessun codice del gestore viene eseguito quando eseguo il sito Web configurato su IIS. Funziona solo se parto da VS.
Cosa mi sono perso durante la configurazione di IIS7?
È possibile avere la configurazione in entrambe le posizioni se si aggiunge in –
curtisk