为什么我在“HttpException”的 Web API 项目中收到缺少命名空间错误

Why am I getting a missing namespace error in my Web API project for 'HttpException'

提问人:springathing 提问时间:9/14/2018 最后编辑:jonscaspringathing 更新时间:9/14/2018 访问量:1724

问:

在 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);
        }
    }
}
C# asp.net 命名空间

评论

0赞 DavidG 9/14/2018
您的确切错误信息是什么?
1赞 Adam Martin 9/14/2018
这可能会有所帮助,stackoverflow.com/questions/45615302/......随着 learn.microsoft.com/en-us/dotnet/api/...
0赞 springathing 9/14/2018
@DavidG 找不到类型或命名空间“HttpException”(是否缺少 using 指令或程序集引用?
0赞 springathing 9/14/2018
@AdamMartin这是一个很好的资源,但我不知道我是否应该实现自己的修复程序,因为我正在学习一本书,我希望得到一个框架或语法答案
0赞 jonsca 9/14/2018
您的项目以哪个框架为目标?

答:

1赞 jonsca 9/14/2018 #1

您在评论中提到您的目标是 .NET Standard 2.0。大部分库已被删除(我相信,主要是因为它不是 .NET Core 的一部分)。System.Web

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

在 VS 版本旁边的下拉列表中选择“修改”,enter image description here

,然后选中“ASP.NET 和 Web 开发”复选框enter image description here

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

enter image description here