HDSoftware Skrevet 18. oktober 2016 Del Skrevet 18. oktober 2016 FOlkens... Holder på med min fantastiske WEB service, men sliter litt. Det som nå skjer er at det kastes en Exception som sier (desverre på norsk) "en eksisterende tilkobling ble tvangslukket av den eksterne verten" Men et google søk førte frem til rett melding. Problemet er jo at denne meldingen er veldig generell, men jeg har kommet frem til følgende: Når jeg kaller servicen fra klienten så kjører faktisk kallet helt ferdig, og i det kallende kode skal overta så kastes altså exceptionen. Jeg har en misstanke om at dette har noe med de returnerte dataene å gjøre, for eksempel at noe av det som returneres er typedefinert i servicen, men jeg greier ikek se hva det er for noe. Jeg har gjort API'et veldig enkelt. Jeg har laget kontrakt klasser i en DLL i form av et Interface og metodene har allesammen eksakt samme prototype teknikk: [ServiceContract] public interface IMinService { [OperationContract] OperationResponse Operation(OperationRequest request); } Videre er Operationresponse og OperationRequest definert som public CLASS, med henholdsvis [DataContract] og [DataMember], som ser slik ut: [DataContract] public class OperationRequest { [DataMember] public string EnVariabel {get; set;} } [DataContract] public class OperationResponse { [DataMember] public string EnReturVerdi{get; set;} } Nå er nok mine klasser litt mere komplekse en de jeg har vist til her, men prinsipielt går de ut på det samme. Noen som har noe erfaring med dette som kan hjelpe meg litt ? Lenke til kommentar
Enthroner Skrevet 19. oktober 2016 Del Skrevet 19. oktober 2016 Reproduseres feilen med MinService? Lenke til kommentar
HDSoftware Skrevet 19. oktober 2016 Forfatter Del Skrevet 19. oktober 2016 (endret) Tror jeg fant ut av det. En av parameterene i Respons klassen var av typen Exception. Dette for å kunne returnere en generel exception til klienten ved behov. Problemet var at jeg sendte en "NotImplementedException". Dette trodde jeg ville være greit da den er kjennt på begge sider, men jeg ser jo i etterkant at klient programmet må callbacke for å fullføre og da er jo servicen allerede stengt. Det løser jo ikke problemet mitt å kommentere vekk denne parameteren, så problemet er der fortsatt, men med en litt annen vinkling. Måten jeg kaller servicen på er slik: using (var Client = GetClient()) var request = New Apirequest(); var ret = Client.Api(request); if (ret.Exception == null) // Handle error Mangler krøll parentesene her fordi de ikke funker akkurat nå av en eller annen sær grunn, men feilen dukker opp ved tilordningen av 'ret' og jeg går ut ifra at det er en eller annen form for reflection eller serialization som finner at det er en Exception der som må castes eller noe sånt og da feiler det. Er det noen mulighet for å unngå problemet? Kan det være at systemet er i en eller annen form for LAZY mode eller noe slikt som gjør at kun ytterste lag sendes tilbake..? Endret 19. oktober 2016 av HDSoftware Lenke til kommentar
Enthroner Skrevet 20. oktober 2016 Del Skrevet 20. oktober 2016 Jeg tror du må lage din egen ExceptionDTO (Data Transfer Object). Mener at Exception ikke har de påkrevede DataContract og DataMember attributes og da vil du få feil med (Net)DataContractSerializer som jeg tipper er den du bruker. Skudd i blinde her men... Lenke til kommentar
HDSoftware Skrevet 20. oktober 2016 Forfatter Del Skrevet 20. oktober 2016 Jeg tror du må lage din egen ExceptionDTO (Data Transfer Object). Mener at Exception ikke har de påkrevede DataContract og DataMember attributes og da vil du få feil med (Net)DataContractSerializer som jeg tipper er den du bruker. Skudd i blinde her men... Tror absolutt du er inne på noe. Men jeg har forenklet dette ved å endre hele Exception elementet til en string. Så i stedet for å kaste en Exception over service kallet så setter jeg bare teksten i stedet og setter et status felt til Failed. Det enkle er ofte det, om ikke beste, så i hvertfall raskeste vei til mål :-) Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå