12

升级到 Visual Studio 2012 后,我无法再访问任何 ApiController,引发以下错误:

Server Error in '/' Application.

Method not found: 'Void System.Net.Http.Headers.HttpHeaders.AddWithoutValidation(System.String, System.Collections.Generic.IEnumerable`1<System.String>)'.

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.MissingMethodException: Method not found: 'Void System.Net.Http.Headers.HttpHeaders.AddWithoutValidation(System.String, System.Collections.Generic.IEnumerable`1<System.String>)'.

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: 


[MissingMethodException: Method not found: 'Void System.Net.Http.Headers.HttpHeaders.AddWithoutValidation(System.String, System.Collections.Generic.IEnumerable`1<System.String>)'.]
   System.Web.Http.WebHost.HttpControllerHandler.AddHeaderToHttpRequestMessage(HttpRequestMessage httpRequestMessage, String headerName, String[] headerValues) +0
   System.Web.Http.WebHost.HttpControllerHandler.ConvertRequest(HttpContextBase httpContextBase) +248
   System.Web.Http.WebHost.HttpControllerHandler.BeginProcessRequest(HttpContextBase httpContextBase, AsyncCallback callback, Object state) +79
   System.Web.Http.WebHost.HttpControllerHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, Object state) +48
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +268
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155

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

任何人都知道如何解决这个问题?

4

4 回答 4

16

您在项目中引用了旧版本的 System.Net.Http。要解决此问题,请转到项目中的“参考”下,删除 System.Net.Http,然后添加 .NET 4.5 附带的版本。那应该这样做。

亨里克

于 2012-06-02T14:49:17.110 回答
3

在此处解决此问题和其他与 RC 相关的问题。

于 2012-06-04T16:26:33.753 回答
2

步骤 1 从您的项目中删除以下引用:

System.Net.Http、System.Web.Http、System.Web.Http.WebHost、System.Web.Http.Common 和 System.Net.Http.Formatting

第 2 步 从以下位置添加上述引用(System.Web.Http.Common 和 System.Net.Http.Formatting 除外)

  1. C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Packages\Microsoft.AspNet.WebApi.Core.4.0.20505.0\lib\net40

  2. C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Packages\Microsoft.AspNet.WebApi.WebHost.4.0.20505.0\lib\net40

  3. C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Packages\Microsoft.Net.Http.2.0.20505.0\lib\net40

添加一个新的 dll Newtonsoft.Json.dll from

  1. C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Packages\Newtonsoft.Json.4.5.1\lib\net40
于 2012-10-17T12:17:22.107 回答
1

这为我修好了。

http://forums.asp.net/t/1809919.aspx/1

找不到方法:'无效 System.Net.Http.Headers.HttpHeaders.AddWithoutValidation(System.String, System.Collections.Generic.IEnumerable`1)'。

我通过以下步骤解决了它。不确定是否所有这些都是必需的,但它有效。

在 NuGet 包管理器中,卸载了 Web.API Beta 包。添加了对 System.Net.Http、System.Web.Http 和 System.Web.Http.WebHost 的引用(这些已被上一步删除)。通过 NuGet 安装 Json.Net。

此外,如果您的项目以 4.0 版本的框架为目标,则必须包含来自 NUGET 的新 Microsoft ASP.Net Web API 包集,以便为您的构建打开绿灯。Json.Net 是这些新包的依赖项,因此您无需单独安装它。

于 2012-07-19T10:13:55.507 回答