2015-01-08 10 views
7

passaggi per ricreare il problema:Aggiunta WebAPI da bambino/applicazione nidificato in IIS

  1. All'interno IIS creare un nuovo sito web .net 4 (di seguito indicata come capogruppo). immagine Goccia di un test nella cartella di questo sito e osservare puoi richiesta con successo in un browser
  2. Aggiungere una nuova directory virtuale o applicazione sotto il genitore che punta a un progetto WebAPI 2
  3. Tentativo di accedere alle API nel browser utilizzando www.path-to-parent-site.com/api/something/or/other

ottengo il seguente errore:

System.Web.Routing.UrlRoutingModule does not implement IHttpHandlerFactory or IHttpHandler. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Configuration.ConfigurationErrorsException: System.Web.Routing.UrlRoutingModule does not implement IHttpHandlerFactory or IHttpHandler. 

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. 

Stack Trace: 


[ConfigurationErrorsException: System.Web.Routing.UrlRoutingModule does not implement IHttpHandlerFactory or IHttpHandler.] 
    System.Web.Configuration.HandlerFactoryCache.GetHandlerType(String type) +12328272 
    System.Web.Configuration.HandlerFactoryCache..ctor(String type) +27 
    System.Web.HttpApplication.GetFactory(String type) +94 
    System.Web.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +375 
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +288 


Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.34209 

c'è qualcosa che posso fare per ottenere funziona? Riesco a trovare pochissime informazioni rilevanti su questo particolare problema e ancora meno soluzioni a coloro che hanno visto questo errore.

Nota: se aggiungo il progetto WebAPI 2 come un nuovo sito Web in IIS, funziona perfettamente; è solo quando è nidificato da bambino (la directory virtuale o l'applicazione ha lo stesso problema) che ciò accade.

Grazie

+0

Sembra che il tuo URL sia sbagliato. –

+2

Commento modificato: sembra che il tuo URL sia sbagliato. Per esempio. il tuo Url è http://www.parentsite.com e la tua directory virtuale è MyApi. L'URL finale è http://www.parentsite.com/MyApi/api/

+0

Hai mai risolto questo? Bloccato sullo stesso problema ora :( –

risposta

0

WebAPI non dovrebbe essere ospitato su una directory virtuale, se vuoi farlo è necessario fare il modello di routing dinamico e caricare la prima parte dalla directory virtuale.

var virtualDirectory = request.ApplicationPath; 
routes.MapHttpRoute(
    name: "API Default", 
    routeTemplate: virtualDirectory + "/api/{controller}/{id}", 
    defaults: new { 
     id = RouteParameter.Optional 
    } 
); 
Problemi correlati