2014-12-23 12 views
7

Mam witrynę Asp.net WebAPI 2 (.net 4.5) działającą w izolacji na moim komputerze lokalnym, którą chcę teraz "osadzić" jako aplikację wirtualną w sieci. formularze (.net 4.0).Zagnieżdżony problem WebAPI z mapowaniem procedur obsługi (problem dziedziczenia?)

Na serwerze ustawiłem nową witrynę i pulę aplikacji oraz skonfigurowałem tam interfejs API i działa dobrze. Następnie utworzyłem aplikację wirtualną w macierzystej aplikacji formularzy internetowych i wskazałem ją w tej samej lokalizacji folderu i puli aplikacji.

Mam zapobiec dziedziczeniu w system.Web owijając go w elemencie lokalizacji

<location path="." inheritInChildApplications="false"> 

Który stałej niektóre kwestie miałem, ale teraz dostaję błąd 500. Widzę, że w dzienniku zdarzeń:

wiadomość wyjątek: System.Web.Routing.UrlRoutingModule nie ma realizować IHttpHandlerFactory lub IHttpHandler.

Które nie sądzę, jest rzeczywisty problem, ale wskaźnik co do problemu z mapowania obsługi w pliku konfiguracyjnym. Przejrzałem i dodałem elementy dla wszystkich programów obsługi mapowanych w aplikacji nadrzędnej, ale to nie rozwiązało problemu. Jeśli pójdę w web.config API i wykomentuj

<add name="UrlRoutingModule-4.0" 
type="System.Web.Routing.UrlRoutingModule" preCondition="" path="*." 
verb="*" /> 

Błąd znika i pojawia się odpowiedź 200, ale nie ma danych z powrotem z API, które sprawia, że ​​myślę, że tak naprawdę nie wiem co zrobić z tą prośbą? Mam dużo googlowałem i nie mogę dojść do sedna lub tego; Zastanawiam się tylko, czy ktoś ma jakieś sugestie na temat tego, co to może być?

Jak już mówiłem, w trybie autonomicznym ten sam kod/config działa dobrze - jego tylko wtedy, gdy jest zagnieżdżony w innej aplikacji, która powoduje problem, co prowadzi mnie do myślenia, że ​​jest to problem typu dziedziczenia konfiguracji.

Dzięki

+0

Zakładam, że zarówno projekt Web Forms, jak i projekt WebAPI mają własny plik web.config. Czy próbowałeś użyć atrybutu w pliku web.config WebAPI, aby nie dziedziczył on wszystkich ustawień zawierającego Web Forms web.config? – Pynt

+1

jeśli pozostawisz rozdzielone aplikacje, łatwiej będzie je zachować i ewoluować. Możesz ograniczyć korzystanie z webapi , aby zaakceptować tylko żądanie z aplikacji internetowej. dlaczego potrzeba osadzenia? – Bombinosh

Odpowiedz

-2

Dlaczego trzeba mieć WebAPI jako VIRUTAL aplikacji?

Bardziej sensowne jest utrzymywanie go w izolacji jako własnej witryny w IIS.