ASP.NET 5.0 中的 HttpClient 未找到?

HttpClient in ASP.NET 5.0 not found?

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

The type or namespace name 'HttpClient' could not be found (are you missing a using directive or an assembly reference?)

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

"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;
    }
}

您需要向 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:

上声明的那样

Fully managed HttpMessageHandler implementation based on sockets.

This project is part of ASP.NET vNext. You can find samples, documentation and getting started instructions for ASP.NET vNext at the Home repo.

可以找到完整的演练here

终于搞定了。 @yuval 用他关于添加依赖项的回答让我走上正轨,并指出 class 存在于 github 上。进一步搜索让我发现 class 似乎还没有包含在预览版中,我不得不将这个 nuget 存储库添加到我的项目中: https://www.myget.org/gallery/aspnetvnext

在那个 repo 中是 asp.net vnext nuget 包的夜间构建,其中包含我想要的 class。将以下行添加到我的主要依赖项部分和两个框架依赖项部分使它对我有用: "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"
        }
    }
} 

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

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

或任何最新版本。

我在这个帖子中缺少 link ....您需要添加 https://www.myget.org/gallery/aspnetvnext NuGet source, but the actual NuGet feed URL for that is 'https://www.myget.org/F/aspnetvnext/'。一旦你将它作为你的金块来源,其余部分就会变得生动起来。

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

您还需要使用 Matt DeKreys 在 6 月 7 日编辑的 'frameworks' 更新部分(dnx451 和 dnxcore50)

我今天在 RC1 中找不到:

对于从那里发现此问题的任何人,HttpClient 现在位于 System.Net.Http 命名空间中。

我今天遇到了同样的问题,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"
      }
    }
  }