2014-06-13 38 views
3

我试图在单声道使用最新的Asp.Net的Web API,但错误这样表示:未能加载类型“System.Web.Http.WebHost.Routing.HttpRouteExceptionHandler”在单

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 

而且我应该通过Nuget包含哪些dll?目前我引用了这些程序集:

- 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

可能重复[无法加载类型'System.Web.Http.WebHost.HttpControllerHandler',在Mono/xsp4中](http://stackoverflow.com/questions/22219229/could-not -load型系统的Web-HTTP-的webhost-httpcontrollerhandler式单 - x)的 –

回答

0

这可能可以通过周围根本就没有使用config.MapHttpAttributeRoutes();,而是手动指定的Web API途径得到(例如config.Routes.MapHttpRoute .. )。

1

我想我将我的回答为时已晚,但我也有类似的问题,并进行调试,我添加以下行源代码:

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

你瞧,编译失败(换行符是我的):

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 

所以,基本上 - 是的。 Busted System.Web.dll

相关问题