HttpHandlers на самом деле довольно простые компоненты.
Во-первых, вам нужно создать класс, который наследует либо IHttpHandler
, либо IHttpAsyncHandler
(для вашего использования я предлагаю IHttpHandler
, так как на самом деле не выполняется тяжелый подъем).
Затем вы скомпилируете DLL и опустите его в папку bin вашего веб-приложения.
Теперь сложная часть. Развертывание HttpHandlers в файле web.config сложно, поскольку он отличается от IIS6, IIS7 Integrated Mode и IIS7 Classic Mode. Самое лучшее место, чтобы смотреть это MSDN страница:
How to: Register HTTP Handlers
IIS6
<configuration>
<system.web>
<httpHandlers>
<add verb="*" path="SampleHandler.new"
type="SampleHandler, SampleHandlerAssembly" />
</httpHandlers>
<system.web>
</configuration>
IIS7 Классический режим
<configuration>
<system.web>
<httpHandlers>
<add verb="*" path="SampleHandler.new"
type="SampleHandler, SampleHandlerAssembly" />
</httpHandlers>
<system.web>
<system.webServer>
<add name=SampleHandler" verb="*" path="SampleHandler.new"
Modules="IsapiModule"
scriptProcessor="FrameworkPath\aspnet_isapi.dll"
resourceType="File" />
</system.webServer>
</configuration>
IIS7 Интегрированный режим
<configuration>
<system.webServer>
<handlers>
<add name="SampleHandler" verb="*"
path="SampleHandler.new"
type="SampleHandler, SampleHandlerAssembly"
resourceType="Unspecified" />
</handlers>
<system.webServer>
</configuration>
Как вы можете видеть, для каждой конфигурации IIS требуются записи в несколько разных разделах файла web.config. Мое предложение состояло в том, чтобы добавлять записи в каждое место, чтобы изменения конфигурации IIS не нарушали ваш HttpHandler.
+1 для разных конфигураций. – Tejs
Знаете ли вы, какой уровень доверия мне нужен для IIS для выполнения этой задачи? –