2012-09-14 9 views
10

Mam aplikację MVC4, ale przede wszystkim używam jej do części WebAPI. Chcę wysłać plik "zwykłego starego HTML" do użytkownika (który następnie użyje KnockoutJS lub KendoUI do ściągnięcia JSON ze sterowników webapi).MVC4 - Czy istnieje sposób na przekierowanie roota na "normalną" nieprzetworzoną stronę html?

wiem, że mogę to zrobić:

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

A jeśli mogę przeglądać na „localhost/index.html” to nie tylko z powodzeniem wrócić moją stronę .html. Jednak naprawdę chcę zmapować domyślną ścieżkę "root" "localhost /", aby zwrócić mój plik index.html.

Próbowałem to:

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

ale wyrzuca błąd:

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'.

ktoś ma jakieś pomysły w jaki sposób można dokonać tej pracy? Mogłem po prostu nacisnąć domyślny kontroler, który zwraca zwykłą stronę HTML, ale wydaje się, że przesadą jest przechodzenie przez cały stos ASP.NET raz dla strony HTML, która po prostu wywołuje URL WebAPI, aby wrócić przez stos ASP.NET aby uzyskać dane JSON dla modelu strony.

Po prostu chcę "pominąć" wszystkie instalacje MVC i poprosić IIS o odesłanie mnie z powrotem do strony html, tak jakby to nie była aplikacja ASP.NET, lub przynajmniej tak mało przetwarzania, jak to tylko możliwe.

+0

Ale gdy pojawi się na trasach MVC, już osiągnął ASP.Net. Jeśli chcesz, aby usługi IIS sobie z tym poradziły, musisz ustawić je na poziomie serwera z regułami przepisywania i takimi. – McGarnagle

+0

Tak, i jestem OK z tym dotykając trochę ASP.NET. Po prostu uznałem, że pusty kontroler jest przesadny. W przypadku trasy ignorowania przynajmniej nie musi tworzyć instancji i wywoływać kontroler i wyświetlać. – CodingWithSpike

Odpowiedz

12

Dodaj następujące wpisy do konfiguracji routingu:

routes.IgnoreRoute(""); 
+0

Ach, oczywiście! Tak proste, dlaczego o tym nie pomyślałem! :) Dzięki! – CodingWithSpike

+0

Jeśli utworzę podstawowy projekt WebApi, dodaję index.html, a także dodaję linię powyżej w mojej klasie RouteConfig, dostaję stronę 404, czy brakuje mi czegoś? – AlexandruC

+0

A.K powinieneś dodać 'routes.IgnoreRoute (" ");' przed innymi trasami. – bonh

Powiązane problemy