Closed johnviggo closed 8 years ago
Vet ikke om det har noe med saken å gjøre, men forsøkte å sette X509KeyStorageFlags.Exportable på X509Certificate2-objektet, men nå får jeg {"Object reference not set to an instance of an object."} igjen.
System.NullReferenceException was unhandled HResult=-2147467261 Message=Object reference not set to an instance of an object. Source=Difi.Oppslagstjeneste.Klient StackTrace: at Difi.Oppslagstjeneste.Klient.OppslagstjenesteKlient.SendEnvelope(AbstractEnvelope envelope) at Difi.Oppslagstjeneste.Klient.OppslagstjenesteKlient.HentPersoner(String[] personidentifikator, Informasjonsbehov informasjonsbehov) at Hemit.BizTalk.DifiTest.Program.Main(String[] args) in c:\VSOTFS\BizTalk\Development\jogr\Hemit.BizTalk.DifiSikkerPost\Hemit.BizTalk.DifiSikkerPost\Program.cs:line 19 at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart() InnerException:
Husket du å huke av for Mark this key as exportable
, slik som guiden sier her, når du la inn sertifikatet?
Har prøvd flere ganger nå @asjafjell. Har fjernet det og lagt det inn på nytt ett par ganger.
Om jeg bruke thumbprint direkte får jeg {"Object reference not set to an instance of an object."}.
Om jeg bruker X509Certificate2 får jeg "Angitt sertifikat med fingeravtrykk xxxx kan ikke eksporteres". Setter jeg X509KeyStorageFlags.Exportable på X509Certificate2-objektet får jeg "Object reference not set.." på denne også.
Fikk "Får ikke kontakt med Oppslagstjenesten. Sjekk tilkoblingsdetaljer og prøv på nytt." ett par ganger, men det har ordnet seg så nå er jeg tilbake på "Object reference not set..."
Det kan være forskjellige årsaker til problemene, men det du må få fikset først er lesing av sertifikater. Du skal ikke sette exportable-flagget i kode om du importerer med thumbprint. Husk at om du kopierer thumbprint fra MMC, så må du fjerne den usynlige Byte Order Mark (BOM), som er først i strengen. dette gjør du ved å ta backspace eller delete i starten, men pass på så du ikke sletter det første synlige tegnet.
Setter kun exportable-flagget om jeg sender inn X509Cetificate2 til OppslagstjenesteKlient.
Om jeg sender inn thumbprint har jeg ikke noe sted å sette dette. Jeg kan alltis prøve å få lagt inn sertfifikat på nytt, men "Object reference not set..." sier meg så lite om hva som er galt.
Jeg får fint eksportert sertifikatet fra MMC om jeg prøver det manuelt, så eksport skal fungere fint.
Mht. bom så fikk jeg feil på dette tidligere (Additional information: Klarte ikke finne sertifikat med thumbprint: ce 5e 1b 25 bf 81 15 36 b9 83 3b a1 ed d9 0f 05 51 9a 4c 72), men det er rettet.
Prøvde meg på fjerne sertifikatet og importere det UTEN å hake av for at det skal kunne eksporteres nå og nå får jeg "Angitt sertifikat med fingeravtrykk CE5E1B25BF811536B9833BA1EDD90F05519A4C72 kan ikke eksporteres" også om jeg sender inn thumbprint.
Så import av sertifikat var ok. Den finner altså sertifikat, men så feiler ett eller annet etterpå som gir object reference-feilen.
Sånn sett så er overskriften på denne posten feil, da jeg ikke får denne meldingen lenger. Vet ikke om du vil lukke og åpne en ny for "Object reference not set..."?
Object reference not set betyr at den ikke finner sertifikatet i certificate store. For at klientbiblioteket skal kunne bruke sertifikatet, må det ha satt exportable-flagget når du importerer.
Husk at du også må velge rett store, som også beskrevet i dokumentasjonen.Om du følger den til punkt og prikke, så skal det fungere. Om det ikke fungerer så må du nesten feilsøke litt på egenhånd. Det kan være en idé å laste inn sertifikatet uten å bruke klientbiblioteket. Du kan starte på denne tråden på Stack Overflow og se om det fører noen vei.
Ikke noe problem å hente sertifikat med thumbprint.
Her er hele koden jeg testet med nå:
https://gist.github.com/johnviggo/a1c7de42db9dc5274ea0
Resultatet fra consolapplikasjonen:
Henter cert med thumbprint ce5e1b25bf811536b9833ba1edd90f05519a4c72 Sertifikat for thumbprint ce5e1b25bf811536b9833ba1edd90f05519a4c72 funnet: ST OL AVS HOSPITAL HF OppslagstjenesteKlient.HentPersoner med thumbprint ce5e1b25bf811536b9833ba1edd90 f05519a4c72
Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object. at Difi.Oppslagstjeneste.Klient.OppslagstjenesteKlient.SendEnvelope(AbstractE nvelope envelope) at Difi.Oppslagstjeneste.Klient.OppslagstjenesteKlient.HentPersoner(String[] personidentifikator, Informasjonsbehov informasjonsbehov) at Hemit.BizTalk.DifiTest.Program.HentPersoner(String personNummer) in c:\VSO TFS\BizTalk\Development\jogr\Hemit.BizTalk.DifiSikkerPost\Hemit.BizTalk.DifiSikk erPost\Program.cs:line 48 at Hemit.BizTalk.DifiTest.Program.Main(String[] args) in c:\VSOTFS\BizTalk\De velopment\jogr\Hemit.BizTalk.DifiSikkerPost\Hemit.BizTalk.DifiSikkerPost\Program .cs:line 38
Jeg forstod det slik at du ikke fikk til å laste sertifikatet med thumbrint, men nå er det problemet løst, og nå har du det samme problemet som opprinnelig? Kan noen i Difi sjekke om svaret på responsen er Ok eller Feilet, @aberner? Enten er det noe vi ikke håndterer i klientbibiloteket, eller så er det noe med oppsettet for avsender.
Problemet var vel at jeg ikke visste hva som var galt pga. at feilemeldinge nå bare er en object reference-feil. Jeg fikk problemer med å hente med thumbprint da jeg slettet sertifikatet og la det inn uten å hake av for at det skulle være mulig å eksportere. Det var bare en test for å se at jeg hadde gjort det riktig ved importering av sert tidligere.
Den opprinnelige feilen mht ekportering ble ok ved å bruke X509KeyStorageFlags.Exportable. Men nå holder jeg meg til thumbprint helt til jeg faktisk får en OK respons fra oppslagstjenesten.
Så for å oppsummere så får jeg samme feil (System.NullReferenceException: Object reference not set to an instance of an object.) om jeg sender inn thumbprint eller X509Certificate2 til OppslagstjenesteKlient.
Hele exception:
System.NullReferenceException was unhandled HResult=-2147467261 Message=Object reference not set to an instance of an object. Source=Difi.Oppslagstjeneste.Klient StackTrace: at Difi.Oppslagstjeneste.Klient.OppslagstjenesteKlient.SendEnvelope(AbstractEnvelope envelope) at Difi.Oppslagstjeneste.Klient.OppslagstjenesteKlient.HentPersoner(String[] personidentifikator, Informasjonsbehov informasjonsbehov) at Hemit.BizTalk.DifiTest.Program.HentPersoner(String personNummer) in c:\VSOTFS\BizTalk\Development\jogr\Hemit.BizTalk.DifiSikkerPost\Hemit.BizTalk.DifiSikkerPost\Program.cs:line 48 at Hemit.BizTalk.DifiTest.Program.Main(String[] args) in c:\VSOTFS\BizTalk\Development\jogr\Hemit.BizTalk.DifiSikkerPost\Hemit.BizTalk.DifiSikkerPost\Program.cs:line 38 at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart() InnerException:
Den er god. Det blir veldig vanskelig for oss å forstå hva problemet når du starter å endre innstillinger på sertifikatlasting. Klarer du å hente sertifikat (uansett måte) og du har satt exportable, så er den biten ok så lenge sertifikatet ikke er null. Da er det ikke vits å endre på hvordan du laster det når noe annet feiler. Et sertifikat er et sertifikat.
Når det er sagt så kan det hende at jeg har funnet en kilde til hvorfor du fortsatt får null pointer
. Jeg skal debugge litt mer for å se hva som er årsaken.
Feilen som ble opplevd var urelatert til ditt problem, så er ikke nærmere en løsning her. Venter fortsatt svar fra @aberner her, for vi klarer ikke reprodusere dette.
Klarer ikkje finne spor av orgno. 883974832 i logger, så mulig det feiler før vi begynner å sjå på sertifikatet på vår side. Eg finn både 200 og 400 status-kode på v5-endepunktet i VER2 idag, men det er fordelt på fleire ulike IP-addresser og .net-klientbibliotek-versjoner, så usikker på kven at dei som faktisk tilhøyrer @johnviggo
Jeg har prøvd å sette noe på alt i OppslagstjenesteKlient som sto til null, bare for å prøve noe, men det hadde dessverre ingen effekt.
Min IP utad bør være 91.186.72.51. Jeg kjører 10 spørringer nå kl 09:05, så kanskje det er mulig å se noe i loggen.
Kl 08:46 og 08:48 ser eg 2 vellukka spørringer frå den IPen. Alt fremstår som OK her, så får du fremdeles feil? Dette er dei einaste oppslaga til no idag, dvs ingenting 09:05.
Merkelig. Har aldri fått noe annet enn feil på min side. Får fremdeles System.NullReferenceException.
For noen dager siden fikk jeg også 4-5 "Får ikke kontakt med Oppslagstjenesten. Sjekk tilkoblingsdetaljer og prøv på nytt.". Kanskje det hjelper dere å spisse litt mer hvor NullReferenceException oppstår?
Nå funker det faktisk! Fikk tilbake en person når jeg testet akkurat nå.
Eller rettere sagt fikk status "IKKE_REGISTERERT" som er naturlig med det fødselsnummeret. @asjafjell @joergenb
Fant dere noe feil?
Meeen nå er jeg tilbake på ObjectReference-feil igjen :(
Hva gjorde du for å få det til å fungere, og hva endret du når du fikk null-referanse?
Nå fant jeg ut hvorfor jeg fikk det til å fungere ett par ganger. Når Fiddler kjører så fungerer det pga. at jeg trykker ja på denne feilmeldingen som kommer i fiddler:
Session #30: The server (kontaktinfo-ws-ver2.difi.no) presented a certificate that did not validate, due to RemoteCertificateChainErrors.
0 - A certificate chain could not be built to a trusted root authority.
ISSUER: CN=COMODO RSA Domain Validation Secure Server CA, O=COMODO CA Limited, L=Salford, S=Greater Manchester, C=GB
Det ser altså ut som jeg mangler ett sertifikat?
Sertifikatet her har vel gått ut nå, men det skulle det vel ikke ha før kl 12 i går såvidt jeg vet, og hadde samme feil da. Skal se om jeg får tak på det nye sertifikatet. Det så ut som jeg måtte signere noe med bank-id sist jeg sjekket og det ga da bare feilmelding.
Har oppdatert sertifikatet nå, men får fremdeles samme feil uten at Fiddler er åpen å lar meg ignorere chain-feilen.
Comodo sertifikatet er knyttet til SSL oppkoblingen og er ikke det samme som Virksomhetssertifikatet fra Buypass.
Du må jo legge inn trust på ssl sertifikatet. Er ikke ca'n til comodo lagt inn hos deg må du gjøre det.
Den ca'n var ikke lagt inn.
Har ordnet det nå og nå fungerer det endelig.
Så bra at det ordnet seg. Jeg lukker denne.
Da lærte vi at vi bør dokumentere at også SSL sertifikatet må stoles på selvsagt. Dette er ikke noe som vil bli levert med klientbiblioteket men forventes at alle har en tillit til.
Har dere noen formening om når V5 kommer ut av beta?
Hei
Har oppdatert til siste versjon nå etter rettingen som ble gjort før helga. Nå får jeg ikke NullReferenceException lenger, men følgende feil:
Koden som brukes: https://gist.github.com/johnviggo/0f4cbf636307b547b764