Глобальная обработка исключений Web Api 2 в VB.net - PullRequest
0 голосов
/ 31 января 2020

Я разработал API отдых в VB.net Все работает нормально, но иногда кажется, что сервис API ломается. У меня есть 2 вопроса:

a) Как я могу заново запустить службу API из кода vb. net? Когда служба API выходит из строя, я должен перекомпилировать приложение API, и оно снова работает нормально. Я могу определить, когда служба не работает, но я не знаю, как мне перезапустить код vb. net. Я ищу в Интернете и не нашел (может быть, я не очень хорошо написал вопрос)

b) Как мне написать общую обработку ошибок для описания ошибок, которые я не могу отловить обычными способами, Возобновите ошибку и ИЗБЕГАЙТЕ СЛОМА ВНИЗ и узнайте, почему сервис не работает

Я написал этот код в модуле

Imports System.Net
Imports System.Net.Http
Imports System.Web.Http
Imports System.Web.Http.Description
Imports System.Threading
Imports System.Threading.Tasks
Imports System.Web.Http.ExceptionHandling
Imports System.Web.Http.Results
Imports System.Web.Http.Filters


Public Class GlobalExceptionHandler
    Inherits ExceptionHandler
    Public Overrides Function ShouldHandle(ByVal context As ExceptionHandlerContext) As Boolean
        Return True
    End Function
    Public Overrides Sub Handle(ByVal context As ExceptionHandlerContext)
        Trace.WriteLine(context.Exception.Message)
        context.Result = New TextPlainErrorResult With {
            .Request = context.ExceptionContext.Request,
            .Content = "lo siento algo fue mal." & "Please contact so we can try to fix it."
        }
    End Sub
    Private Class TextPlainErrorResult

        Public Property Request As HttpRequestMessage
        Public Property Content As String

        Public Function ExecuteAsync(ByVal cancellationToken As CancellationToken) As Task(Of HttpResponseMessage)
            Dim response = New HttpResponseMessage(HttpStatusCode.InternalServerError) With {
                .Content = New StringContent(Content),
                .RequestMessage = Request
            }
            Return Task.FromResult(response)
        End Function
    End Class
End Class

Когда я хочу зарегистрировать его в webapiconfig.vb, я вставляю этот код (добавление Imports System.Web.Http.ExceptionHandling)

config.Services.Replace(TypeOf (IExceptionHandler), New api3.GlobalExceptionHandler())

, но ошибка представляет собой фид, показывающий IExceptionHandler тип интерфейса, и его нельзя использовать в качестве выражения

Я проверяю все Возможности, но я не могу найти ошибку.

Пожалуйста, кто-нибудь может помочь? Заранее благодарю и прошу прощения за моего бедного Энгли sh

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