online net mvc gratis change asp c# asp.net-mvc model-view-controller iis-5

c# - gratis - ASP.NET MVC en un directorio virtual



png to ico favicon online (4)

Hay varias consideraciones al usar directorios virtuales en su aplicación.

Uno es particular es que la mayoría de los navegadores no enviarán cookies que provienen de un directorio virtual a otro, incluso si las aplicaciones residen en el mismo servidor.

Tengo lo siguiente en mi Global.asax.cs

routes.MapRoute( "Arrival", "{partnerID}", new { controller = "Search", action = "Index", partnerID="1000" } ); routes.MapRoute( "Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = "" } );

Mi SearchController se parece a esto

public class SearchController : Controller { // Display search results public ActionResult Index(int partnerID) { ViewData["partnerID"] = partnerID; return View(); } }

e Index.aspx simplemente muestra ViewData ["partnerID"] en este momento.

Tengo un directorio virtual configurado en IIS en Windows XP llamado Test.

Si apunto mi navegador a http: // localhost / Test / entonces aparece 1000 como se esperaba. Sin embargo, si intento http: // localhost / Test / 1000 obtengo un error de página no encontrada. ¿Algunas ideas?

¿Hay alguna consideración especial para ejecutar MVC en un directorio virtual?


Intente establecer la ruta virtual: haga clic con el botón derecho en el proyecto mvc, propiedades, pestaña web, ingrese la ubicación adecuada.


Si está haciendo esto en Windows XP, entonces está usando IIS 5.1. Necesita obtener ASP.Net para manejar su solicitud. Necesita agregar una extensión a sus rutas ({controller} .mvc / {action} / {id}) y asignar esa extensión a ASP.Net o asignar todas las solicitudes a ASP.Net. El http: // localhost / Test funciona porque va a Default.aspx, que se maneja especialmente en proyectos de MVC.

Además, debe especificar http: // localhost / Test / Search / Index / 1000 . El controlador y las piezas de acción no son opcionales si desea especificar una ID.


IIS 5.1 interpreta su url de manera que está buscando una carpeta llamada 1000 en la carpeta llamada Prueba. ¿Por qué es así?

Esto sucede porque IIS 6 solo invoca ASP.NET cuando ve una "extensión de nombre de archivo" en la URL asignada a aspnet_isapi.dll (que es un filtro C / C ++ ISAPI responsable de invocar ASP.NET). Como el enrutamiento es un .NET IHttpModule denominado UrlRoutingModule, no se invoca a menos que se invoque a ASP.NET, lo que solo ocurre cuando se invoca aspnet_isapi.dll, lo que solo ocurre cuando hay un .aspx en la URL. Entonces, no .aspx, no UrlRoutingModule, de ahí el 404.

La solución más fácil es:

Si no le molesta tener .aspx en sus URL, simplemente revise su configuración de enrutamiento, agregando .aspx antes de una barra diagonal en cada patrón. Por ejemplo, use {controller} .aspx / {action} / {id} o myapp.aspx / {controller} / {action} / {id}. No coloque .aspx dentro de los nombres de los parámetros de corchetes, ni en los valores ''predeterminados'', porque no es realmente parte del nombre del controlador; solo está en la URL para satisfacer a IIS.

Fuente: http://blog.codeville.net/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/