Tengo una aplicación ASP.NET existente que implementa Autenticación de formularios en todo el sitio. La aplicación se implementa en varias instancias (por ejemplo, customer1, customer2, test, dev, etc ...), con una base de datos separada por instancia. SSL está en juego. La configuración de la instancia se realiza a través de un archivo de configuración XML.Servicio web ASP.NET dentro de la aplicación Autenticación de formularios
Tengo un nuevo requisito para permitir la carga/descarga de ciertos datos, que me gustaría implementar como un servicio web público.
Mi idea inicial aquí era deshabilitar selectivamente la autenticación de formularios para un subdirectorio de la aplicación (por ejemplo, ~/Servicios), y luego realizar la autenticación a través de un encabezado SOAP o similar.
Sin embargo, no estoy encontrando la forma de desactivar selectivamente las formas auth.
Pregunta: ¿Hay alguna manera de hacer esto? Probé la < ubicación > etiqueta en la configuración web en vano.
De no ser así, ¿cuáles son sus recomendaciones sobre cómo configurar esto? Puedo pensar en las siguientes opciones:
1) Crear un nuevo proyecto de "Servicios" en mi solución, y luego configurar una aplicación IIS ASP.NET por separado en ese directorio en cada instancia. (Pro: fácil acceso a la configuración de la instancia, que puede ser necesaria en el futuro. Con: carga de configuración para cada instancia relevante).
2) Cree una solución de "Servicios" separada que haga referencia a los ensamblajes necesarios de la solución de la aplicación y que los aloje como una aplicación ASP.NET separada. A continuación, busque la cadena de conexión db en función del nombre de usuario proporcionado en el encabezado SOAP. (Pro: aplicación única para configurar en IIS. Con: No hay acceso fácil a la configuración de la instancia)
3) ??
Aclaración: Vi la respuesta aquí: Override ASP.NET forms authentication for a single page, pero el uso de una etiqueta de ubicación no está ayudando (las solicitudes del servicio web aún se redireccionan). Las secciones relevantes en mi web.config este aspecto:
<system.web>
<authentication mode="Forms">
<forms loginUrl="Login.aspx"/>
</authentication>
<authorization>
<deny users="?"/>
<allow users="*"/>
</authorization>
</system.web>
<location path="~/Services/MyService.asmx">
<system.web>
<authentication mode="None" />
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
Cada vez que todos los que he usado la etiqueta de ubicación en un web.config el camino ha sido en forma de "Servicios/MyService.asmx" no "~/Servicios/MyService.asmx" ¿Usted ha intentado especificando sin la tilde-slash? –
Eso fue todo. Podría jurar que había probado 3 versiones diferentes de eso. Esta vez cerré el navegador y tu solución funcionó a la perfección. – dividius