Почему в проекте веб-API для HttpException возникает ошибка отсутствующего пространства имен - PullRequest
0 голосов
/ 14 сентября 2018

После ASP.NET Web Api 2 При создании службы REST от начала до конца я наткнулся на ошибку пространства имен, которую не могу устранить специально для ссылки 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);
        }
    }
}

1 Ответ

0 голосов
/ 14 сентября 2018

Вы упомянули в комментариях, что вы нацелены на .NET Standard 2.0.Большая часть библиотеки System.Web была удалена (в основном из-за того, что она не является частью .NET Core, я считаю).

Для восстановления доступа к этому классу вы должны использовать платформу 4.x.Если у вас нет других типов веб-проектов, кроме .NET Core и .NET Standard, вам нужно будет перейти к установщику Visual Studio и выбрать поддержку 4.x framework.

Выберите «Изменить» в разделев раскрывающемся списке рядом с вашей версией VS enter image description here

, затем установите флажок для ASP.NET и веб-разработки enter image description here

Затемв диалоговом окне «Новый проект» вы должны увидеть эту опцию:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...