参考输入“HttpContextBase”声称它是在“的System.Web”定义,但它不能被发现(

2019-10-30 03:33发布

我发现了一个非常奇怪的错误,我已经只发现几次与一些相当广泛的谷歌搜索。 我在做一个授权属性添加到我在一个类库的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)
            {

            }
        }
    }
}

该错误是在HttpContext的if语句。

Answer 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目标版本。 它最有可能是不正确。



文章来源: Reference to type 'HttpContextBase' claims it is defined in 'System.Web' but it could not be found