digipost / signature-api-client-dotnet

Apache License 2.0
3 stars 3 forks source link

Heng i kode dersom directClient.Create(job) kjøres via C# MVC Controller #423

Closed eivindivine closed 10 months ago

eivindivine commented 10 months ago

Jeg forsøker å gjennomføre directClient.Create(job) i sin enkleste form, og dersom den kjøres i console application eks "Program.Main()" fungerer det fint, men ikke når den kalles i en MVC controller. (Koden er lik, men kjøres fra forskjellige kontekster). Miljø: .Net Framework 4.8, med Digipost.Signature... v.9.0.3

Koden returnerer ingen feilkode, men blir evig hengende på directClient.Create(job).

Er det forutsetninger til kjørekontekst?

Kan lett gjenskapes ved å kjøre følgende kode: (forutsatt at orgnummer, personnummer, pdf-path og egen thumbprint legges inn)

testfil er lagt ved som utgjør TestController.cs TestController.txt

runeflobakk commented 10 months ago

Dersom et nettverkskall henger, så tyder det ofte på infrastrukturproblemer, manglende åpning i brannmur, manglende bruk av proxy, eller lignende, som gjør at kallet ikke slipper ut fra egen infrastruktur og når frem til API-et.

F.eks. proxy kan konfigureres der du setter opp ClientConfiguration ved å sende med WebProxy og NetworkCredential.

eivindivine commented 10 months ago

Jeg klarer ikke å finne logikk i det ettersom dialog med Digdir sier at de mottar spørringene våre og innkommen data tilsier at det er ok, men requestet avsluttes ikke i Create(Job). Console app med samme kode kjører på samme PC, og burde ha samme nettverksrestriksjoner fra standard oppsett, men klarer å gjennomføre kallet.

runeflobakk commented 10 months ago

Jeg er lite bevandret med .NET, men hører noen hint om at dette sannsynligvis kan løses med .ConfigureAwait(false), og at årsaken kommer av noe blanding av synkron og asynkron kode.

Kan dette hjelpe deg noe på vei? https://stackoverflow.com/a/14527164 https://devblogs.microsoft.com/pfxteam/await-and-ui-and-deadlocks-oh-my/

runeflobakk commented 10 months ago

Gjør du .Result noe sted? https://stackoverflow.com/a/59123318

you should not use .Result to get the result of tasks inside most applications except console applications if you do so your program will hang when it gets there

eivindivine commented 10 months ago

Takk! Det var løsningen!