Pregunta

¿Cuál es la mejor manera de hacer que el alojamiento de una aplicación ASP.NET MVC funcione en IIS 5 (6 o 7)?Cuando intenté publicar mi aplicación ASP.NET MVC, todo lo que encontré fueron errores 404.Busqué un poco en Google y encontré un par de soluciones, pero ninguna parece súper elegante, y me preocupa si quedarán inutilizables una vez que use un entorno de alojamiento compartido para la aplicación.

Solución 1

  1. Haga clic derecho en el directorio virtual de su aplicación en inetmgr.exe.
  2. Propiedades->Pestaña Directorio virtual-> Configuración.
  3. Agregue una nueva extensión de mapeo.La extensión debe ser.*, Que se asignará al ejecutable C: Windows Microsoft.net Framework v2.0.50727 aspnet_isapi.dll, o la ubicación apropiada en su computadora (simplemente puede copiarlo desde la asignación de la asignación archivos .aspx).En la asignación, desmarque "Verifique que exista ese archivo".
  4. 3 X OK y listo.
  5. Si lo desea, puede aplicar esta configuración a todos sus sitios web.En el paso 1, haga clic en el nodo "Sitio web predeterminado" en lugar de su propio directorio virtual, y en el paso 2, vaya a la pestaña "Directorio de inicio".El resto es el mismo.

Parece un poco complicado enrutar todo a través de ASP.NET.

Soluciones 2

Edite el enrutamiento MVC para que contenga .mvc en la URL y luego siga los pasos de la solución 1 en función de esta extensión. Editar:El enlace de la imagen original se perdió, pero aquí está del caché de Google:

alt text

¿Fue útil?

Solución

La respuesta es aquí

Si *.MVC Extension no está registrada en el alojamiento, dará una excepción 404.La forma de funcionamiento de alojar aplicaciones MVC en ese caso es modificar Global.asax Ruting Caluse de la siguiente manera.

rutas.Add (nueva ruta ("{controlador} .mvc.aspx/{action}", new mvCrouteHandler ()) {defaults = new RoutEvaluedcineyary (new {Controller = "YourController"})});

De esta manera, toda su solicitud de controlador terminará en *.mvc.aspx, que es reconocida por su alojamiento.Y como los DLL MVC se copian en su contenedor local, no se deben hacer asentaciones especiales para ello.

Otros consejos

Creo de cualquier manera tendrás que hacer la Solución 1.

Considere la canalización de solicitudes HTTP.

  1. Llega una solicitud a IIS.
  2. IIS verifica el puerto/encabezado del host para ver si tiene un sitio web configurado para capturar solicitudes para ese encabezado/puerto del host.
  3. IIS investiga la extensión del archivo de la solicitud (.php, .asp, .aspx) y la entrega a una ISAPI que puede manejar ese tipo de solicitud.

Sólo en este punto se activa ASP.NET (o un tiempo de ejecución de PHP). Si IIS no tiene esa asignación, nunca entregará la solicitud al tiempo de ejecución de ASP.NET y la solicitud nunca llegará a su código.Es por eso que necesita esa asignación global (*) a ASP.NET ISAPI.

Las URL del marco ASP.NET MVC a menudo terminan sin ninguna extensión de archivo.Si desea que ASP.NET (o algún otro tiempo de ejecución) maneje estas solicitudes, debe asignar todas las solicitudes, independientemente de la extensión del archivo, a esa ISAPI (es decir,aspnet_isapi.dll).

Esto también se suele hacer para HttpHandlers que necesitan servir en medios como .jpg, .gif.Para que se acceda al controlador, es necesario asignarlo a su código, aunque .jpg no sea una extensión de archivo ASP.NET "normal".

HTH,
tyler

Correr:C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll -i

Esto restablecerá la configuración del registro de IIS para el usuario de aspnet.

Cree el directorio virtual:1.Haga clic derecho en el directorio que desea convertir

  • seleccione Propiedades
    1. en Directorio, seleccione Crear.
    2. en Configuración, seleccione Agregar.
    3. para inserción ejecutable:

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll

para inserto de extensión:.*

  • desmarque "Comprobar que el archivo existe"

  • en Documentos, agregue el archivo de punto de entrada, es decir:Predeterminado.htm, index.htm, Global.asax

  • en Configuración del directorio

    1. seleccione Editar...
    2. seleccione Acceso anónimo
    3. desmarque Permitir que IIS controle la contraseña
    4. desmarque la autenticación básica
    5. desmarque la autenticación integrada de Windows
    6. en ASP.NET, asegúrese de que la versión = v4.0.30319

TOMA NOTA del nombre de usuario, es decir:IUSR_AVSJ82S

Establecer permiso para compartir del directorio físico:

  • En el Explorador de Windows, vaya al directorio físico que se convirtió en un directorio virtual.Haga clic derecho en el nombre del directorio
  • seleccionar propiedades
  • En la pestaña de seguridad, seleccione Agregar.
  • ingrese el nombre de usuario de IIS, es decir:IUSR_AVSJ82S haga clic en verificar nombre.
  • haga clic en Aceptar
  • establezca permisos para lectura y escritura.

FYI: en Server 2003 (desarrollando una aplicación que tuvo que conectarse a los RPS), no me permitió agregar la extensión.*, Utilicé la solución alternativa que modificó la cláusula de ruta, y eso funcionó.

¿Has intentado agregar .aspx al final del nombre del controlador?

Funcionó para la pregunta de Stack Overflow ¿Dónde puedo conseguir alojamiento ASP.NET MVC?.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top