Laden...

"Der Thread befindet sich bereits im Hintergrundverarbeitungsmodus" Problem in WebApi (Json.NET)

Erstellt von Wax vor 8 Jahren Letzter Beitrag vor 8 Jahren 1.030 Views
Wax Themenstarter:in
731 Beiträge seit 2006
vor 8 Jahren
"Der Thread befindet sich bereits im Hintergrundverarbeitungsmodus" Problem in WebApi (Json.NET)

Hallo,

ich habe zur Zeit das Problem, dass ich folgende Fehlermeldung bekomme:> Fehlermeldung:

"Der Thread befindet sich bereits im Hintergrundverarbeitungsmodus".

Dies passiert, wenn ich in einem ASP.NET WebApi ActionFilterAttribute mein Modell validiere und im Fehlerfall der Eigenschaft HttpActionContext.Response einen Fehler-Response zuweise.

Ich muss allerdings dazu sagen, dass der Inhalt des Response-Objektes ein JSON-String ist, welcher mittels Json.NET serialisiert wird.

Hat jemand schon mal ein ähnliches Problem gehabt bzw. kann mir sagen was ich machen kann?

Gruß,
wax

Hinweis von Coffeebean vor 8 Jahren

Bitte benutze die richtigen Code-Tags! [Hinweis] Wie poste ich richtig?

16.788 Beiträge seit 2008
vor 8 Jahren

Zeig mal Code. Du scheinst irgendeinen async oder Task Fehler zu haben.

Wax Themenstarter:in
731 Beiträge seit 2006
vor 8 Jahren

Leider ist der Code zu tief verschachtelt, um alles hier zu zeigen.
Ich habe es gelöst, in dem ich die relevanten Teile aus mehreren Ebenen zusammengefasst habe und direkt in der "OnActionExecuting" - Methode ausführe:


public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext)
        {
            if (!actionContext.ModelState.IsValid)
            {
                String errorMessage = CreateErrorMessageFromModelState(actionContext.ModelState);
                
                IMyResponse resultContent = new MyResponse();
                resultContent.Error = new MyError(errorMessage );
                
                HttpResponseMessage response = actionContext.Request.CreateResponse<IMyResponse>(HttpStatusCode.BadRequest, resultContent, new CustomJsonMediaTypeFormatter());
                actionContext.Response = response;
            }
        }

Der Code um das HttpResponseMessage-Objekt zu bekommen, war zuvor in min. 3-4 Methodenaufrufen verschachtelt. Da wurde aber nirgends ein Task erstellt und async war auch nicht zur Stelle.

Weiß ehrlich gesagt nicht woran es gelegen hat.

Gruß,
wax