2014-06-13 6 views
3

J'ai essayé d'utiliser la plus récente API Web Asp.Net en Mono, mais l'erreur montre comme ceci:Impossible de charger le type 'System.Web.Http.WebHost.Routing.HttpRouteExceptionHandler' Mono

System.TypeLoadException 
Could not load type 'System.Web.Http.WebHost.Routing.HttpRouteExceptionHandler' from assembly 'System.Web.Http.WebHost, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. 

Description: HTTP 500.Error processing request. 
Details: Non-web exception. Exception origin (name of application or object): System.Web. 
Exception stack trace: 
    at System.Web.Routing.UrlRoutingModule.PostResolveRequestCache (System.Web.HttpContextBase context) [0x00054] in /Volumes/build-root-ramdisk/mono-3.4.0/mcs/class/System.Web.Routing/System.Web.Routing/UrlRoutingModule.cs:128 
    at System.Web.Routing.UrlRoutingModule.PostResolveRequestCache (System.Object o, System.EventArgs e) [0x00007] in /Volumes/build-root-ramdisk/mono-3.4.0/mcs/class/System.Web.Routing/System.Web.Routing/UrlRoutingModule.cs:88 
    at System.Web.HttpApplication+<RunHooks>c__Iterator0.MoveNext() [0x001ba] in /Volumes/build-root-ramdisk/mono-3.4.0/mcs/class/System.Web/System.Web/HttpApplication.cs:1050 
    at System.Web.HttpApplication+<Pipeline>c__Iterator1.MoveNext() [0x0073b] in /Volumes/build-root-ramdisk/mono-3.4.0/mcs/class/System.Web/System.Web/HttpApplication.cs:1260 
    at System.Web.HttpApplication.Tick() [0x00000] in /Volumes/build-root-ramdisk/mono-3.4.0/mcs/class/System.Web/System.Web/HttpApplication.cs:932 

Version Information: 3.4.0 ((no/c3fc3ba Thu May 1 22:52:17 EDT 2014); ASP.NET Version: 4.0.30319.17020 

Et quelles dlls je devrais inclure via Nuget? Actuellement, j'ai référencé ces assemblages:

- System (from GAC) 
- System.Web (from GAC) 
- System.Web.Http (from Nuget) 
- System.Net.Http.Formatting (from Nuget) 
- System.Web.Http.WebHost (from Nuget) 
- Newtonsoft.Json (from Nuget) 
+0

duplication possible de [Impossible de charger le type 'System.Web.Http.WebHost.HttpControllerHandler', dans Mono/xsp4] (http://stackoverflow.com/questions/22219229/could-not -load-type-system-web-http-webhost-httpcontrollerhandler-en-mono-x) –

Répondre

0

Ce peut être obtenu autour simplement de ne pas utiliser config.MapHttpAttributeRoutes();, mais spécifiant les routes de l'API Web manuellement (par exemple config.Routes.MapHttpRoute .. .).

1

Je suppose que j'ajoute ma réponse trop tard, mais je viens d'avoir problème similaire, et de débogage, j'ai ajouté la ligne suivante au code source:

var httpHost = new System.Web.Http.WebHost.HttpControllerHandler(null); 

lo et voici, la compilation a échoué avec (les sauts de ligne sont les miens ici):

Global.asax.cs(116,56): error CS1684: Reference to type 
`System.Web.HttpTaskAsyncHandler' claims it is defined assembly 
`System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a', 
    but it could not be found 

donc, fondamentalement - oui. Busted System.Web.dll

Questions connexes