Как решить: BadHttpRequestException: «Плохие данные о размере фрагмента». - PullRequest
1 голос
/ 28 октября 2019

Я обнаружил следующее исключение при попытке устранения неполадок моего исходного вопроса :

BadHttpRequestException: 'Bad chunk size data.'

Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException
  HResult=0x80131620
  Message=Bad chunk size data.
  Source=Microsoft.AspNetCore.Server.Kestrel.Core
  StackTrace:
   at Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException.Throw(RequestRejectionReason reason)

Вышеуказанное исключение произошло на моем контроллере WebAPI.

Клиент:

let httpClient baseAddress =

    let handler = new HttpClientHandler()
    handler.AutomaticDecompression <- DecompressionMethods.GZip ||| DecompressionMethods.Deflate

    let client = new HttpClient(handler)
    client.Timeout     <- TimeSpan(0,0,3)
    client.BaseAddress <- Uri(baseAddress)
    client.DefaultRequestHeaders.Accept.Clear()
    client.DefaultRequestHeaders.Accept.Add(MediaTypeWithQualityHeaderValue("application/json"))
    client

let postTo baseAddress (resource:string) (payload:Object) =

    use client  = httpClient baseAddress
    let encoded = Uri.EscapeUriString(resource)

    let result  = client.PostAsJsonAsync(encoded, payload) |> toResult
    result

Вот как это называется:

let response = postTo AccountService.endPoint "register" applicant

Сервер:

open Microsoft.AspNetCore.Mvc
open Courier.Account.Language
open Courier.Account.Applicant

[<ApiController>]
[<Route("api/[controller]")>]
type RegisterController () =
    inherit ControllerBase()

    [<HttpPost>]
    member x.Post([<FromBody>] applicant:Applicant) =

        try 
            applicant
            |> Post.application
            |> function
               | Error msg -> x.StatusCode(500, msg) :> IActionResult
               | Ok result -> x.Ok(result)           :> IActionResult

        with 
            ex -> x.StatusCode(500, ex.Message) :> IActionResult

ПРИМЕЧАНИЕ:

Многие из моих наблюдений и результатов поиска неисправностей можно найти в моем оригинальном сообщении .

Приложение:

[<CLIMutable>]
type Applicant = {
    FirstName : string
    LastName  : string
    Phone     : string
    Email     : string
}
...