System.Net.Http丢失了吗?

时间:2014-10-09 07:33:04

标签: asp.net async-await dotnet-httpclient

我正在尝试运行Test.aspx:

<%@ Page language="c#" EnableViewState="true" ContentType="text/html" Async="true" %>

<script language="C#" runat="server">

    void Page_Load(Object Src, EventArgs E )
    {
        RegisterAsyncTask(new PageAsyncTask(BindData));
    }

    private async System.Threading.Tasks.Task BindData()
    {
        Response.Write("Hello?<br /><br />");

        using (System.Net.Http.HttpClient httpClient = new System.Net.Http.HttpClient())
        {
            Response.Write(await httpClient.GetStringAsync("http://www.google.com"));
        }

        Response.Write("<br /><br />Is this thing on?<br /><br />");
    }

</script>

并收到此错误:

Test.aspx(14): error CS0234: The type or namespace name 'Http' does not exist in the namespace 'System.Net' (are you missing an assembly reference?)

System.Net.Http.dll程序集在

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies

在IIS管理器中基本设置&#39;应用程序池是ASP.NET v4.0(集成)。有没有人碰到这个?

更新:我安装了.Net 4.5.2并添加了以下web.config

<configuration>
  <system.web>
    <httpRuntime targetFramework="4.5" />
   <compilation>
      <assemblies>
         <add assembly="System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
      </assemblies>
   </compilation>
  </system.web>

</configuration>

并且有效。

4 个答案:

答案 0 :(得分:9)

要解决此问题,我必须添加

<add assembly="System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>

 <httpRuntime targetFramework="4.5.2" />

到web.config

答案 1 :(得分:0)

我已经尝试过这个高度建议的解决方案(我在SO中发现这是许多类似问题中的公认答案)

Web.Config上写下并重建解决方案

<system.web>
    <compilation debug="true" targetFramework="4.0" />
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
       <add assembly="System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
      </assemblies>
    </compilation>
</system.web>

但不幸的是,我没有运气。最后,我找到了一个适合我的解决方案并节省了我的一天:)

  1. 右键点击References文件夹&gt; Add Reference...
  2. 展开窗口左侧的Assemblies,然后选择Framework。
  3. 滚动并选择程序集列表中的System.Net.Http。 确保选中System.Net.Http旁边的框,然后点击 OK
  4. 重建项目。

答案 2 :(得分:0)

就我而言,问题是在升级到.NET Framework 4.7.2之后开始出现的。我发现不再建议使用System.Net.Http的Nuget程序包。解决方法如下:

答案 3 :(得分:-1)

要解决我的问题,只需在webconfig中添加。

<add assembly="System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 

<httpRuntime targetFramework="4.5" />