FileNotFoundException:无法加载文件或程序集'System.Net.Http.WebRequest'

时间:2018-10-11 15:46:21

标签: asp.net asp.net-core-2.0 system.net system.net.httpwebrequest

我已经下载了最新的.NET Framework,并且正在VS 2017 15.8.7上开发.NET Core 2.0应用程序。 这是我安装的软件包。

enter image description here

using (var client = new PowerBIClient(new Uri(ApiUrl), tokenCredentials))
      {

      }

我在此行遇到错误,说:

FileNotFoundException: Could not load file or assembly 'System.Net.Http.WebRequest, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified.

这是我的.csproj

 <PackageReference Include="Microsoft.AspNetCore.App" />
 <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.1.2" PrivateAssets="All" />
 <PackageReference Include="Microsoft.PowerBI.Api" Version="2.0.14" />
 <PackageReference Include="Microsoft.PowerBI.Core" Version="1.1.11" />
 <PackageReference Include="Microsoft.AspNet.WebApi.Client" Version="5.2.6" />
 <PackageReference Include="System.Net.Http" Version="4.3.4" />

为什么会出现此错误。我可以添加参考以使其正常工作吗?

[UPDATE] 我在csproj中添加了以下几行,不再收到此错误。

<ItemGroup>
    <Reference Include="System.Net.Http">
      <HintPath>..\..\..\..\..\..\Windows\Microsoft.NET\Framework\v4.0.30319\System.Net.Http.dll</HintPath>
    </Reference>
    <Reference Include="System.Net.Http.WebRequest">
      <HintPath>..\..\..\..\..\..\Windows\Microsoft.NET\Framework\v4.0.30319\System.Net.Http.WebRequest.dll</HintPath>
    </Reference>
  </ItemGroup>

3 个答案:

答案 0 :(得分:3)

有问题。您的目标是.NET Core。您正在使用的代码在幕后使用WebRequest ,. NET Core中不存在。您需要定位整个框架:

<TargetFramework>net461</TargetFramework>

或您要定位的任何版本。那当然意味着您只能在Windows服务器上运行此应用程序。

答案 1 :(得分:1)

我知道您可能会遇到此错误的2种情况:

  • nuget软件包未安装在解决方案的“客户端项目”中(仅向解决方案的公共/分解项目添加依赖项;有时您需要使用其自身将依赖项添加到项目中)
  • 您定义的Framework版本与解决方案的所有项目都不兼容,或者与已安装的nuget软件包不兼容;您可以考虑对所有nuget软件包进行重大升级,并检查在每个项目上定义的Framework版本

答案 2 :(得分:0)

有时,这有助于在NuGet(System.Net.Http)上安装丢失的软件包的最高版本。可能发生的情况是ASP.NET使用的版本与PowerBI不同,并且可能需要绑定重定向。