asp.net redirect asp.net-mvc-4 angularjs pushstate

La aplicación de una sola página en AngularJS y ASP.Net funciona bien, pero cuando actualizo mi página en el navegador obtengo errores 404



redirect asp.net-mvc-4 (2)

Así que configuré una aplicación de una página HTML5 y está funcionando bien. La página está en /App/ y cuando alguien va al contenido se ve como /App/Content/1234 .

Un problema: si el usuario actualiza la página, el servidor no puede encontrar esa URL porque en realidad no existe. Si los envío a /App/#/Content/1234 , son dorados, pero ¿cuál es la mejor manera de hacerlo? Tengo MUCHOS estilos diferentes de URL en / Aplicación.

¿Cuál es la mejor manera de capturar globalmente cualquier solicitud bajo ~/App/(.*) y redirigirla a ~/App/#/$1 ?

La única ruta registrada en MVC es la ruta OOTB estándar.


Parece que su servidor no está reescribiendo las URL en la URL base de la aplicación.

La reescritura de URL necesaria en el servidor web depende del servidor. Para Apache, usaría mod_rewrite.

En cambio, cambie Angular al "modo Hashbang" (el predeterminado) para que las urls almacenen el estado local después del # en la url.

No quiero que mis aplicaciones requieran cambios en la configuración del servidor, por lo que recomiendo el modo hashbang.

Vea los documentos de AngularJS . Consulte la sección "Modos Hashbang y HTML5". La sección del modo HTML5 describe todos los problemas de configuración necesarios para admitir el modo HTML5 para las direcciones URL.


Este tipo impresionante describe cómo solucionar esto aquí .

En breve:

  1. Elimina los elementos de MVC (a menos que utilices controladores MVC para nada): puedes mantener numerados los API de la Web. Guarde los paginas web y los paquetes Razor. También elimine los controladores y vistas MVC.
  2. Puede continuar usando archivos .cshtml con algunas modificaciones web.config. Lo necesitarás para agrupar.
  3. Finalmente, agrega una regla de reescritura en web.config para señalar todas las URL (excluyendo contenido, imágenes, secuencias de comandos, etc.) a index.html