System.Net.Http缺失?

4
我正在尝试运行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 管理器中,基本设置的应用程序池为 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>

然后它就起作用了。


2
请确保在.NET 4.5中引用了System.Net.Http.dll。 - Niranjan Singh
https://dev59.com/BWQo5IYBdhLWcg3wGsLM - tt_emrah
3
  1. 如果您没有正确的框架版本,将无法帮助您。 您安装了4.5版吗?
  2. Import 是用于命名空间的。您需要使用Assembly来添加对dll的引用。无论您使用什么IDE,都需要引用程序集。VS只是使添加它们变得更容易。
- Panagiotis Kanavos
1
为了解决这个问题,我不得不在web.config中添加<add assembly="System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>和<httpRuntime targetFramework="4.5.2" />。 - MarkF
我有这个<compilation debug="true" targetFramework="4.0">,它仍然可以工作。 - nu everest
显示剩余4条评论
4个回答

11
为了解决这个问题,我不得不添加:

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

 <httpRuntime targetFramework="4.5.2" />

添加到 web.config 文件中


1
我尝试了这个被高度推荐的解决方案(我在许多类似的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 文件夹 > Add Reference...
  2. 在窗口左侧展开 Assemblies 并选择 Framework。
  3. 在程序集列表中滚动并选择 System.Net.Http。 确保旁边的框已经被选中,然后点击 OK
  4. 重新构建项目。

1

-1
为了解决我的问题,只需在webconfig中添加以下内容。
<add assembly="System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 

<httpRuntime targetFramework="4.5" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接