Peter Bucher - Mein Experiment, meine Spielereien, meine Welt...   ·   Stefan Falz   ·   Jürgen Gutsch   ·   Golo Roden   ·   ASP.NET Zone   ·   Microsoft ASP.NET
Willkommen bei ASP.NET Zone. Anmelden | Registrieren | Hilfe

HttpHandler innerhalb eines Controls

Ich dachte lange Zeit das dies nicht möglich sei, jedoch ist es fast zu einfach um wahr zu sein :-)
Okay zugegeben, es müssen schon spezielle Anwendungsfälle sein, um einen HttpHandler innerhalb eines Controls zu benötigen.

Es braucht dazu zwei Schritte, um ans Ziel zu gelangen.

  1. Eine Klasse in einem Control Projekt die die Schnittstelle IHttpHandler implementiert
  2. Einen Eintrag in der web.config, der auf diesen Handler zeigt

Wie ihr evt. schon vermutet, gibt es auch eine gewisse Einschränkung.
Es braucht einen Eintrag in der web.config, um den Handler überhaupt irgendwie anzusprechen.
Beim Attribut "type" ist es wichtig, den kompletten Namen inklusive des Namespaces anzugeben.
Bei einem normalen *.ashx Handler ist das nicht unbedingt der Fall, dieser kann auch über seinen physischen Namen angesprochen werden.

Ein Eintrag in der web.config kann bspw. so aussehen:

<system.web>
  <httpHandlers>
    <add verb="GET" path="MeinHandler.axd" type="Firma.Controls.MeinHandler"/>
  </httpHandlers>
  [...]

Wichtig ist hierbei, das bei einer Angabe eines kompletten Dateinamens, dieser jeweils überall im gesamten Projekt angesprochen werden kann.
*.axd ist natürlich nicht von Nöten. Ich habe diese Endung in Anlehnung an "WebResource.axd" genommen.

Veröffentlicht Mittwoch, 28. November 2007 19:40 von Peter Bucher

Kommentare

# re: HttpHandler innerhalb eines Controls

na bitte, also gehts doch :-)

Mittwoch, 28. November 2007 20:43 by jolli

# re: HttpHandler innerhalb eines Controls

cool, danke für die info :-)

Mittwoch, 28. November 2007 22:17 by Jürgen Gutsch

# re: HttpHandler innerhalb eines Controls

Eine Frage dazu: Wenn die zu prüfenden Datei sich nicht im Root, sondern im Verzeichnis abc befindet, muss dann der PATH die Struktur beinhalten, also in folgender Form:

path="abc/myfile.pdf"?

Vielen Dank für Antwort!

Montag, 10. Dezember 2007 10:19 by Anonymous

# re: HttpHandler innerhalb eines Controls

Achja, dann noch eine Ergänzung. Im IIS7 muss der Handler etwas anders registriert werden:

<configuration>

[...]

<system.webServer>

<handlers>

<add name="resources" path="portaldata/*/resources/*.pdf" verb="*"

type="ContentXXL.Runtime.Security.StaticFileHandler" />

<add name="resources" path="portaldata/*/resources/*.doc" verb="*"

type="ContentXXL.Runtime.Security.StaticFileHandler" />

</handlers>

</system.webServer>

</configuration>

Montag, 10. Dezember 2007 10:21 by Anonymous

# re: HttpHandler innerhalb eines Controls

Hallo Stevens

> Eine Frage dazu: Wenn die zu prüfenden Datei sich nicht im Root, sondern im Verzeichnis abc befindet, muss dann der PATH die Struktur beinhalten, also in folgender Form:

path="abc/myfile.pdf"?

Ja, der Pfad muss drin sein, wenn du dich explizit darauf beziehen möchtest.

Wenn du es allerdings - wie ich im Beispiel - nur auf einen virtuellen Dateinamen mappen möchtest, reicht der Dateiname.

Das greift dann überall auf den Namen.

Aber ich bin wohl schon zu spät, was? ;-)

Danke für die IIS7 Ergänzung.

Dienstag, 11. Dezember 2007 17:06 by Peter Bucher

# HttpHandler der besonderen Art - Page Handler

HttpHandler wurden von mir hier im Blog schon einmal erläutert und ein zweites Mal aufgegriffen . Es

Montag, 4. Februar 2008 20:26 by Peter Bucher
Anonyme Kommentare sind nicht zugelassen