【问题标题】:Reference to type 'HttpContextBase' claims it is defined in 'System.Web' but it could not be found对“HttpContextBase”类型的引用声称它是在“System.Web”中定义的,但找不到
【发布时间】:2019-02-21 19:11:00
【问题描述】:

我遇到了一个非常奇怪的错误,我通过一些相当广泛的谷歌搜索只发现了几次。我正在制作一个授权属性以添加到类库中 ASP.NET MVC 项目中的操作中。我通过NuGet安装了ASP包,可以使用intellisense从filterContext中获取HttpContext,但是说在它应该在的地方找不到HttpContext类型。

对“HttpContextBase”类型的引用声称它在“System.Web”中定义,但找不到。

StackOverflow 上有几个版本,但没有一个对我有用,因为其中大多数都包括重新启动 Visual Studio 或只是构建项目。

编辑

using System.Web.Mvc;
namespace Foo
{
    public class RequireLogin : IAuthorizationFilter
    {
        public void OnAuthorization(AuthorizationContext filterContext)
        {
            if (filterContext.HttpContext.Request.Cookies)
            {

            }
        }
    }
}

错误出现在 if 语句的 HttpContext 上。

【问题讨论】:

  • 请编辑问题并分享您遇到问题的代码。你在使用 HttpContext.Current 吗?
  • 您似乎没有在命名空间上方的 usings 中导入 System.Web。
  • 它就在那里,我只是没有在示例中包含它们中的任何一个,说它们是未使用的。

标签: c# asp.net .net asp.net-mvc visual-studio


【解决方案1】:

我在一个相当简单的网页应用程序中遇到了同样的错误,该应用程序由一个 .cshtml 页面组成,它完全没有做任何事情(“Hello World”)。在我的情况下,错误是由于引用了不正确的 .NET 版本。

显然,如果您只是从头开始创建基本的 web.configindex.cshtml,则默认引用 .NET 版本 2,因此未定义 HttpContextBase

将目标版本改为.NET 4.x,问题就解决了。

我能够使用的最简单的web.config 是:

<?xml version="1.0"?>
<configuration>
  <system.webServer>
    <defaultDocument>
      <files>
        <add value="index.cshtml"/>
      </files>
    </defaultDocument>
  </system.webServer>
  <system.web>
    <compilation targetFramework="4.6.2" debug="true"/>
  </system.web>
</configuration>

总之,检查您的 .NET 目标版本。它很可能是不正确的。

【讨论】:

    猜你喜欢
    • 2018-11-23
    • 2018-09-12
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 2018-10-21
    相关资源
    最近更新 更多