net mvc handling error custom asp asp.net-mvc iis shared-hosting

asp.net-mvc - custom - asp net mvc error handling



ASP.NET MVC e IIS 5 (5)

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

Funcionó para Stack Overflow question ¿Dónde puedo obtener ASP.NET MVC hosting? .

¿Cuál es la mejor manera de obtener alojamiento de una aplicación ASP.NET MVC para trabajar en IIS 5 (6 o 7)? Cuando traté de publicar mi aplicación ASP.NET MVC, todo lo que parecía obtener son errores 404. He hecho un poco de búsqueda de Google y he encontrado un par de soluciones, pero ninguna de las dos parece muy elegante, y me preocupa que no puedan usarse una vez que utilice 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 adecuada en su computadora (simplemente puede copiar esto de la asignación para archivos .aspx). En el mapeo desmarque "verificar que el archivo exista".
  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 lo mismo

Parece un poco raro encaminar 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: se perdió el enlace de la imagen original, pero aquí proviene de la memoria caché de Google:


Creo que de todos modos tendrás que hacer la Solución 1 .

Considere la canalización de Solicitud HTTP.

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

Solo en este punto aparece 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 ese mapeo glob (*) para ASP.NET ISAPI.

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

Esto también se suele hacer para HttpHandlers que necesitan servir en medios como .jpg, .gif. Para que el controlador sea atacado necesita ser asignado a tu código aunque .jpg no es una extensión de archivo ASP.NET "normal".

HTH,
Tyler


Ejecute: C: / WINDOWS / Microsoft.NET / Framework / v4.0.30319 / aspnet_isapi.dll -i

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

Cree el directorio virtual: 1. Haga clic con el botón derecho en el directorio que desea convertir

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

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

para inserción de extensión:. *

  • desmarque "Comprobar que el archivo existe"

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

  • en la configuración del directorio

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

TENGA EN CUENTA el nombre de usuario, es decir: IUSR_AVSJ82S

Establecer el permiso de uso compartido del directorio físico:

  • En Windows Explorer, 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 el nombre de verificación.
  • haga clic en Aceptar
  • establecer permisos para Leer y Escribir.

FYI: en el servidor 2003 (desarrollo de una aplicación que tenía que conectarse al RPS), no me permitió agregar la extensión. *, Utilicé la solución alternativa que modifica la cláusula de ruta, y funcionó.


La respuesta está here

Si la extensión * .mvc no está registrada en el alojamiento, dará una excepción 404. La forma más efectiva de hospedar aplicaciones MVC en ese caso es modificar la ruta de enrutamiento global.asax de la siguiente manera.

routes.Add (nueva ruta ("{controller} .mvc.aspx / {action}", new MvcRouteHandler ()) {Defaults = new RouteValueDictionary (new {controller = "YourController"})});

De esta forma, toda la solicitud de su controlador terminará en * .mvc.aspx, que es reconocido por su hosting. Y como las DLL de MVC se copian en su contenedor local, no es necesario realizar ajustes especiales para ello.