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)
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)
您需要向nuget包管理器(https://www.myget.org/F/aspnetvnext)添加新源,然后将依赖项添加到您的project.json文件中.对于dnx451和dnxcore50:
{
"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的示例,文档和入门说明.
完整的演练可以在这里找到