C# 为什么在';HttpException';

C# 为什么在';HttpException';,c#,asp.net,namespaces,C#,Asp.net,Namespaces,在ASP.NETWebAPI2从头到尾构建REST服务这本书之后,我遇到了一个名称空间错误,我无法为HttpException引用专门解决这个错误 var-httpException=作为httpException的异常 我使用的是C#,我只在VB.NET中看到过这种样式,所以可能会出现一些关于预期语法样式的问题。更正建议一直试图将h小写以生成httpException,但httpException是预期的 以下是完整的代码: using System.Net; using Sy

在ASP.NETWebAPI2从头到尾构建REST服务这本书之后,我遇到了一个名称空间错误,我无法为HttpException引用专门解决这个错误

var-httpException=作为httpException的异常

我使用的是C#,我只在VB.NET中看到过这种样式,所以可能会出现一些关于预期语法样式的问题。更正建议一直试图将h小写以生成httpException,但httpException是预期的

以下是完整的代码:

    using System.Net;
    using System.Net.Http;
    using System.Web; // bad practice: not usually supposed to be used on non 
    // web application projects
    using System.Web.Http.ExceptionHandling;
    using WebApi2Book.Data.Exceptions;

    namespace WebApi2Book.Web.Common.ErrorHandling
    {
    public class GlobalExceptionHandler : ExceptionHandler
    {
        public override void Handle(ExceptionHandlerContext context)
        {
            var exception = context.Exception;

            var httpException = exception as HttpException; <- red squiggle
            if (httpException != null)
            {
                context.Result = new SimpleErrorResult(context.Request, (HttpStatusCode)httpException.GetHttpCode(), httpException.Message);
                return;
            }
            if (exception is RootObjectNotFoundException)
            {
                context.Result = new SimpleErrorResult(context.Request, HttpStatusCode.NotFound, exception.Message);
                return;
            }
            if (exception is ChildObjectNotFoundException)
            {
                context.Result = new SimpleErrorResult(context.Request, HttpStatusCode.Conflict, exception.Message);
                return;
            }
            context.Result = new SimpleErrorResult(context.Request, HttpStatusCode.InternalServerError, exception.Message);
        }
    }
}
使用System.Net;
使用System.Net.Http;
使用System.Web;//坏习惯:通常不应该用于非
//web应用程序项目
使用System.Web.Http.ExceptionHandling;
使用WebApi2Book.Data.Exceptions;
命名空间WebApi2Book.Web.Common.ErrorHandling
{
公共类GlobalExceptionHandler:ExceptionHandler
{
公共重写无效句柄(例外HandlerContext上下文)
{
var exception=context.exception;

var httpException=exception as httpException;您在评论中提到,您的目标是.NET标准2.0。大部分
System.Web
库已被删除(我认为,这主要是因为它不是.NET核心的一部分)

您应该以4.x framework为目标以重新获得对此类的访问。如果除了.NET Core和.NET Standard之外,您没有任何其他web项目类型,则需要转到Visual Studio安装程序并选择4.x framework支持

在VS版本旁边的下拉列表下选择“修改”,

然后选中ASP.NET和Web开发的复选框

然后,在“新建项目”对话框中,您应该看到以下选项:


您的确切错误消息是什么?这可能会有所帮助,因为@DavidG无法找到类型或命名空间“HttpException”(您是否缺少using指令或程序集引用?)@AdamMartin这是一个很好的资源,但我不知道我是否应该实现我自己的修复,因为我正在跟随一本书学习,我希望有一个框架或语法答案哪个框架是你的项目目标?