找不到ASP.NET 5.0中的HttpClient?

dam*_*ull 22 .net c# asp.net dnx asp.net-core

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

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

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

"WebApplication1.ASP.NET 5.0 - Available"
"WebApplication1.ASP.NET Core 5.0 - Not Available"
Run Code Online (Sandbox Code Playgroud)

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

"frameworks": {
    "aspnet50": { },
    "aspnetcore50": { }
},
Run Code Online (Sandbox Code Playgroud)

我假设其中一个是由于没有组装而负责,但我真的不知道如何解决它或如何工作.

如何让网站与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;
    }
}
Run Code Online (Sandbox Code Playgroud)

dam*_*ull 15

终于搞定了一切.@yuval让我在正确的轨道上找到了关于添加依赖关系并指出该类存在于github上的答案.进一步的搜索让我发现该类似乎还没有包含在预览版中,我不得不将这个nuget repo添加到我的项目中:https://www.myget.org/gallery/aspnetvnext

在那个回购中是每晚构建的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"
        }
    }
} 
Run Code Online (Sandbox Code Playgroud)

  • 这是一个过时的答案 (2认同)

Mar*_*rco 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": { }
  }
Run Code Online (Sandbox Code Playgroud)

后:

"frameworks": {
    "dnx451": {
      "dependencies": {
        "System.Net.Http": "4.0.1-beta-23516"
      }
    },
    "dnxcore50": {
      "dependencies": {
        "System.Net.Http": "4.0.1-beta-23516"
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)


Yuv*_*kov 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"
               }
          }
 }
Run Code Online (Sandbox Code Playgroud)

它作为ASP.Net xNext包的一部分实现,因为它们在github上声明:

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

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

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