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