studio asp.net ihttphandler

asp.net - studio - httphandler c#



¿Por qué no se llama a mi IHttpHandler? (2)

Estoy intentando que un controlador personalizado funcione para una URL específica (o conjunto de URL) en ASP.NET 3.5.

El manejador aún no hace nada significativo todavía, simplemente registra la solicitud. Puedo publicar el código si alguien lo considera relevante, pero realmente no creo que lo llamen en absoluto. (En particular, para las excepciones normales, obtengo una página de error personalizada y el registro ... aquí solo obtengo el IIS 404 de vainilla).

Aquí está el bit relevante del archivo web.config :

<system.web> <httpHandlers> <add verb="GET,POST" path="*.robot" validate="false" type="CSharpInDepth.Wave.RobotHandler, CSharpInDepth"/> </httpHandlers> </system.web>

(Obviamente, también hay otras cosas en esa sección, pero no creo que sean relevantes).

Localmente, ejecutándose bajo el servidor dev, funciona bien. En mi caja real, siempre obtengo un 404. Todo en el directorio del sitio web es el mismo (replicado a través de svn). Eso incluye el directorio bin contiene CSharpInDepth.dll , que he verificado contiene CSharpInDepth.Wave.RobotHandler .

Intento obtener http://csharpindepth.com/foo.robot y solo obtengo un 404.

He intentado con y sin el nombre del ensamblaje, las URL específicas o los comodines ... nada funciona.

Estoy seguro de que me he perdido alguna marca simple en algún lugar de la configuración de IIS, pero me sorprende que pueda encontrarla ...

EDIT: Es la versión 6 de IIS. Intento agregar * .robot al filtro ISAPI ahora ...


Bueno, si el cuadro de alojamiento es IIS7 en canalización integrada, debe agregarlo en el otro bit de la configuración:

<system.webmodules> .... <modules> <add name="RobotHandler" type="CSharpInDepth.Wave.RobotHandler, CSharpInDepth"/> </modules> .... </system.webmodules>

Si es IIS6, entonces deberá asignar * .robots a la DLL ISAPI de ASP.NET.

(Para los no Skeets, haga esto de la siguiente manera)

  1. Abre el administrador de IIS.
  2. Haga clic con el botón derecho en el sitio web que desea configurar y seleccione Propiedades del menú contextual. Esto mostrará el cuadro de diálogo Propiedades del sitio web.
  3. Seleccione la pestaña Directorio principal y haga clic en el botón Configuración. Esto mostrará el cuadro de diálogo Configuración de la aplicación.
  4. Haga clic en Agregar.
  5. Seleccione aspnet_isapi.dll en el directorio de .NET framework, la extensión que desea asignar y Todos los verbos, o solo los que desea asignar.
  6. Haga clic en Aceptar.

Jon

Tendrá que configurar las asignaciones de script IIS para pasar * .robot a aspnet_isapi.dll.