为啥我的 Web API 项目中出现“HttpException”缺失命名空间错误

Posted

技术标签:

【中文标题】为啥我的 Web API 项目中出现“HttpException”缺失命名空间错误【英文标题】:Why am I getting a missing namespace error in my Web API project for 'HttpException'为什么我的 Web API 项目中出现“HttpException”缺失命名空间错误 【发布时间】:2019-02-18 17:13:09 【问题描述】:

按照 ASP.NET Web Api 2 Building a REST Service from Start to Finish 一书,我遇到了一个命名空间错误,我无法专门针对 HttpException 参考解决该错误。

var httpException = exception as 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);
        
    

【问题讨论】:

您的确切错误信息是什么? 这可能会有所帮助,***.com/questions/45615302/… 和 docs.microsoft.com/en-us/dotnet/api/… @DavidG 找不到类型或命名空间“HttpException”(您是否缺少 using 指令或程序集引用?) @AdamMartin 这是一个很好的资源,但我不知道我是否应该实施自己的修复,因为我正在学习一本书,我希望有一个框架或语法答案跨度> 您的项目针对的是哪个框架? 【参考方案1】:

您在 cmets 中提到您的目标是 .NET Standard 2.0。 System.Web 库的大部分内容已被淘汰(我相信主要是因为它不是 .NET Core 的一部分)。

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

在您的 VS 版本旁边的下拉菜单下选择“修改”,

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

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

【讨论】:

以上是关于为啥我的 Web API 项目中出现“HttpException”缺失命名空间错误的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 Web API 对所有内容都返回 405?

为啥我的数据没有在 Flutter for web 中使用 api 从实时数据库中检索

为啥 ASP.NET web api 3 项目在 ASP.NET web api 2 执行时没有请求就无法启动?

为啥我在构建 Flutter Web 时会出现白屏

为啥我的 Meteor API 中仍然出现“Access-Control-Allow-Origin”?

为啥我没有在经过 Windows 身份验证的 Web Core API 中获得我的用户名?