gpt4 book ai didi

c# - 找不到 HttpRequestMessage,但引用了 System.Net.Http

转载 作者:太空狗 更新时间:2023-10-29 20:38:56 32 4
gpt4 key购买 nike

我有一个新的 .Net 4.5.2(已检查这是目标框架)Web API 应用程序(在 VS 2015 中)。我引用了 System.Net.Http,如您所见,版本是 4.0.0.0:

properties of system.Net.Http reference

在我的过滤器/属性中,我试图引用 System.Net.Http 命名空间中的 HttpRequestMessage(我在文件顶部使用了正确的用法), 但我得到的信息是

The type 'HttpRequestMessage' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'

error when trying to reference HttpRequestMessage

虽然我不能引用那个类,但我可以在 Object Exploerer 中浏览到它(我假设这使用了 .dll 旁边的同名 .xml 文件)。

我已经尝试过(编辑:以及通常的重启 VS 和重建等):

  1. 删除并重新添加引用(从框架和扩展——虽然我确定它是框架版本,但我已经绝望了)
  2. 从 Nuget 安装并引用我的版本本地包文件夹,它似乎只是默认返回到系统范围的版本。
  3. 在 Nuget PM 中重新安装我的所有依赖项:update-package -reinstall -ignoreDependencies
  4. 将程序集手动添加到 web.config 将程序集手动添加到 .csproj 文件

[编辑:解决方案:

好的,我创建了一些新的 VS Web API 项目(和解决方案)以查看是否可以重现该问题。最后,我创建了一个新的“Filters”文件夹,在其中创建了一个新的 Filter 类,复制了我精简的原始文件的内容,然后看看 HttpRequestMessage被识别。以另一种方式返回同样的事情(我的过滤器最初是在 App_Code 文件夹中创建的)并且它仍在工作。我想也许有一个看不见的对旧 System.Net.Http 的引用,它在工作中造成了麻烦,即使我可能已经注释掉了调用它的代码,但不知何故它被记住了.那只是一个猜测。但无论如何,将其精简到最基本的部分并从那里开始是导致解决方案的 final方法。]

最佳答案

在我的例子中,想要在 App_Code 中实际使用动态编译的文件,我必须在 Web.Config 的编译节点中显式添加程序集:

<system.web>
<compilation targetFramework="4.8">
<assemblies>
<add assembly="System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</assemblies>
</compilation>
...

这解决了我的问题。当然,根据你的项目需要调整目标框架。

关于c# - 找不到 HttpRequestMessage,但引用了 System.Net.Http,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32555809/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com