2012-09-14 25 views
10

Tengo una aplicación MVC4, pero principalmente la estoy usando para las piezas WebAPI. Quiero que se envíe un archivo "HTML antiguo simple" al usuario (que luego usará KnockoutJS o KendoUI para extraer JSON de los controladores webapi).MVC4 - ¿Hay alguna manera de enrutar la raíz a una página html no procesada "normal"?

Sé que puedo hacer esto:

routes.IgnoreRoute("{page}.html"); 

Y luego, si hojeo a "localhost/index.html" lo hace con éxito acaba de regresar a mi página html. Sin embargo, realmente quiero asignar la ruta predeterminada "raíz" localhost/"para devolver mi index.html.

yo probamos este:

routes.MapPageRoute("root", "", "~/index.html"); 

pero que arroja el error:

There is no build provider registered for the extension '.html'. You can register one in the <compilation><buildProviders> section in machine.config or web.config. Make sure is has a BuildProviderAppliesToAttribute attribute which includes the value 'Web' or 'All'.

Alguien tiene alguna idea sobre cómo puedo hacer este trabajo? Podría pulsar un controlador predeterminado que devuelva una página html simple, pero parece exagerado pasar por toda la pila ASP.NET una vez para la página HTML, que luego llama a una URL WebAPI para volver a la pila ASP.NET para obtener algunos datos JSON para el modelo de la página.

Básicamente, simplemente quiero "omitir" todas las tuberías de MVC y hacer que IIS me envíe de vuelta la página html, como si no fuera una aplicación ASP.NET, o al menos hacer el menor procesamiento posible.

+0

Pero una vez que llegue a las rutas de MVC, que ya ha alcanzado ASP.Net. Si desea que IIS lo maneje, debe configurarlo en el nivel del servidor con reglas de reescritura y demás. – McGarnagle

+0

Sí, y estoy de acuerdo con que toque un poco ASP.NET. Solo pensé que un controlador vacío era excesivo. Con la ruta de ignorar, al menos no tiene que crear instancias y llamar al controlador y a la vista. – CodingWithSpike

Respuesta

12

Añadir lo siguiente a su configuración de enrutamiento:

routes.IgnoreRoute(""); 
+0

¡Ah, por supuesto! Tan simple, ¿por qué no pensé en eso? :) ¡Gracias! – CodingWithSpike

+0

Si creo un proyecto básico de WebApi, agrego un index.html y también agrego la línea anterior en mi clase RouteConfig, obtengo una página 404, ¿me falta algo? – AlexandruC

+0

A.K debe agregar 'routes.IgnoreRoute (" ");' antes de sus otras rutas. – bonh

Cuestiones relacionadas