22

使用 VS2015 和 asp.net 5,当我尝试使用 System.Net.HttpClient 的实例编译我的网站时,它告诉我:

找不到类型或命名空间名称“HttpClient”(您是否缺少 using 指令或程序集引用?)

将鼠标悬停在有问题的代码上,我看到:

"WebApplication1.ASP.NET 5.0 - Available"
"WebApplication1.ASP.NET Core 5.0 - Not Available"

我的 project.json 文件中列出了 2 个框架:

"frameworks": {
    "aspnet50": { },
    "aspnetcore50": { }
},

我假设其中一个因没有组装而负责,但我真的不知道如何修复它或它是如何工作的。

如何让网站使用 HttpClient 运行而不是抛出错误?下面贴出的冒犯方法:

private async Task<string> GetStringFromUri()
{
    using (var httpClient = new HttpClient())
    {
        result = await httpClient.GetStringAsync(
        new Uri("http://baconipsum.com/api/?type=meat-and-filler"));

        viewModel= result;
        return viewModel;
    }
}
4

6 回答 6

15

终于把一切搞定了。@yuval 用他关于添加依赖项的回答让我走上了正确的轨道,并指出该类存在于 github 上。进一步搜索使我发现该类似乎尚未包含在预览版本中,我不得不将此 nuget 存储库添加到我的项目中: https ://www.myget.org/gallery/aspnetvnext

在那个 repo 中是 asp.net vnext nuget 包的夜间构建,其中包含我想要的类。将以下行添加到我的主要依赖项部分和两个框架依赖项部分中,这对我有用:“Microsoft.Net.Http.Client”:“1.0.0.0-rc1-10049”

"dependencies": {
    [...],
    "Microsoft.Net.Http.Client": "1.0.0.0-rc1-10049"
},
"frameworks": {
    "aspnet50": {
        "dependencies": {
            "Microsoft.Net.Http.Client": "1.0.0-rc1-10049"
        }
    },
    "aspnetcore50": {
        "dependencies": {
            "Microsoft.Net.Http.Client": "1.0.0-rc1-10049"
        }
    }
} 
于 2015-01-17T15:16:34.347 回答
11

我今天遇到了同样的问题,2016 年解决方案变得更加简单。

不再需要添加新的 Nuget 存储库。

添加时System.Net.Http(当前版本为 4.0.1-beta-23516),如果你的目标是 clr 以及核心框架版本,你仍然会得到相同的错误,因此需要将依赖项复制到 dnxcore 框架依赖项列表中,以获得你的代码编译。

前:

"frameworks": {
    "dnx451": { 
      "dependencies": {
        "System.Net.Http": "4.0.1-beta-23516"
      }
     },
    "dnxcore50": { }
  }

后:

"frameworks": {
    "dnx451": {
      "dependencies": {
        "System.Net.Http": "4.0.1-beta-23516"
      }
    },
    "dnxcore50": {
      "dependencies": {
        "System.Net.Http": "4.0.1-beta-23516"
      }
    }
  }
于 2016-02-13T20:40:36.630 回答
6

您需要将新源添加到您的 nuget 包管理器 ( https://www.myget.org/F/aspnetvnext ),然后将依赖项添加到您的project.json文件中。对于dnx451dnxcore50

{
   "frameworks": {
       "dnx451": {
         "frameworkAssemblies": {
             "Microsoft.Net.Http.Client": "1.0.0-beta3-10053"
              }
         },
         "dnxcore50": {
            "frameworkAssemblies": {
               "Microsoft.Net.Http.Client": "1.0.0-beta3-10053"
               }
          }
 }

它是作为 ASP.Net xNext 包的一部分实现的,正如他们在github上所说:

基于套接字的完全托管的 HttpMessageHandler 实现。

该项目是 ASP.NET vNext 的一部分。您可以在 Home repo 中找到 ASP.NET vNext 的示例、文档和入门说明。

完整的演练可以在这里找到

于 2015-01-14T17:53:32.173 回答
4

我今天在 RC1 中找不到:

对于从那里找到这个问题的任何人,HttpClient现在都在System.Net.Http命名空间中。

于 2015-11-19T06:25:47.003 回答
3

只需将此添加到您的project.json

"dependencies": {
    ...
    "Microsoft.Net.Http": "2.2.7-beta"
},

或任何最新版本。

于 2015-02-10T00:39:29.843 回答
0

对我来说,此线程中缺少一个链接....您需要添加https://www.myget.org/gallery/aspnetvnext NuGet 源,但实际的 NuGet 提要 URL 是' https://www .myget.org/F/aspnetvnext/ '。一旦你把它作为你的金块来源,它的其余部分就会变得生动起来。

此外,在撰写本文时(2015 年 6 月 17 日),版本为“Microsoft.Net.Http.Client”:“1.0.0-beta3-10053”。

您还需要使用 6 月 7 日来自 Matt DeKreys 编辑的更新的“框架”部分(dnx451 和 dnxcore50)

于 2015-06-17T14:59:59.830 回答