Estoy recién aprendiendo ASP.NET MVC, y recientemente encontré el atributo [RequireHttps] para redirigir automáticamente una solicitud GET para usar SSL, como ...Cómo especificar un puerto diferente con el atributo RequireHttps en MVC3
[RequireHttps] //apply to all actions in controller
public class SomeController
{
[RequireHttps] //apply to this action only
public ActionResult SomeAction()
{
...
}
}
al utilizar IIS Express como el servidor de desarrollo, esto vuelve a dirigir correctamente la solicitud de http://localhost:55945/...
a https://localhost/...
.
Sin embargo, en mi sistema de desarrollo, mi proyecto está utilizando HTTPS en el puerto 44300 (esto fue configurado automáticamente por Visual Studio 2010), y todavía no he encontrado ninguna manera de decirle a MVC que use ese número de puerto en la redirección, entonces que va al https://localhost:43300/...
requerido en su lugar.
Realmente esperaba que esto sea automático, dado que el número de puerto SSL fue establecido automáticamente por Visual Studio, y hasta donde puedo decir, esto debe afectar a todos los desarrolladores que usan el atributo [RequireHttps] en MVC3. En mi búsqueda de una solución, he visto algunas soluciones irregulares de "solución alternativa", pero nada que parezca definitivamente "la forma correcta" de solucionarlo.
Haciendo las cosas "de la manera correcta", qué cambio (ya sea en el código fuente o en la configuración de mi proyecto) para decirle al atributo [RequireHttps] en MVC3 que use el puerto HTTPS que mi proyecto está configurado estar usando?
O, como alternativa, ¿hay alguna otra "manera correcta" completamente diferente y mejor para configurar el soporte SSL en un proyecto MVC3, que no tiene este problema?
Obtengo la primera parte de tu respuesta, aunque parezca un truco, para algo que no debería ser pirateado. Pero no entiendo tu último párrafo. Necesito que mi sistema de desarrollo se comporte (tan de cerca como sea posible) de la misma manera que se comportará el sistema de los usuarios. Eso significa que algunas páginas usarán HTTPS, y otras no. También significa que no puedo controlar con qué URL ingresará el usuario. –
Lo que quiero decir es que probablemente no necesite la redirección real para trabajar en su máquina de desarrollo, y en producción será de todos modos el puerto HTTPS estándar. Este sería el caso si todo el sitio se ejecutara bajo HTTPS, porque podría simplemente iniciar la aplicación con el puerto HTTPS correcto y mantenerse dentro del contexto HTTPS. Si entiendo bien, este no es el caso, por lo que debe hacer que la redirección también funcione en su máquina de desarrollo. Actualizo la respuesta y trato de expresar mejor lo que quise decir, pero puede que no sea relevante para ti de todos modos. –