[C#] Bestand ophalen vanop netwerk lukt niet altijd

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • h199
  • Registratie: Juli 2003
  • Laatst online: 23-07 18:11
Hallo

Ik heb een probleem met het ophalen van bestanden vanop een netwerk locatie.
Het probleem is dat ik nu en dan de melding krijg : IOException kan het netwerkpad niet vinden.
Dit terwijl de locatie en bestand bestaan.

Als je dezelfde functie 30 sec later uitvoert dan lukt alles prima. Het probleem doet zich eigenlijk sporadisch voor, het kan dagen goed gaan voor dit probleem zich nog eens voort doet.

Ik vermoed dat het iets met time-out te maken heeft bij het opvragen van het bestand.
Is er een mogelijkheid dat ik deze time-out problemen kan opvangen ?


code:
1
2
3
4
5
6
7
8
Image afbeelding = null;
string strA = DB.GetPasFoto(person.RRN)

 //Afbeelding moet ingelezen worden 
MemoryStream ms = new MemoryStream(File.ReadAllBytes(resource.AFBEELDING_LOCATION + "\\" + strA));

afbeelding = Image.FromStream(ms);
ms.Close();


Kan iemand mij hierbij helpen ?

Alvast bedankt

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

Een exception kun je natuurlijk gewoon catchen en vervolgens netjes afhandelen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 19:01

Reptile209

- gers -

Hoe belangrijk is het dat het ophalen van het bestand (pasfoto?) lukt? Kan je deze code in een try/catch gooien, loggen en negeren? Of vanaf dat punt de gebruiker om geduld vragen en na even wachten opnieuw proberen?

Zo scherp als een voetbal!


Acties:
  • 0 Henk 'm!

  • h199
  • Registratie: Juli 2003
  • Laatst online: 23-07 18:11
Hallo

Het ophalen van de pasfoto's is een belangrijke functie omdat het start sherm van deze module alle werknemers weergeeft volgens een filter ( vb. alle werknemers dienst x) en dit aan de hand van hun pasfoto.

Ik kan wel een soort van default foto weergeven indien het ophalen niet lukt maar ik vrees dat ik dan telefoontjes zal krijgen.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Zoals gezegd kun je met een try/catch (en een eventuele "wachtperiode" van een paar seconden oid) prima de exception vangen en een tweede poging doen. Meer dan dat kun je niet doen; of dacht je dat .Net kon toveren en een niet bestaande/werkende netwerkverbinding even tussen-neus-en-lippen-door voor je fixt en het dan nog eens probeert :?

Je kunt wel gaan stoeien met allerlei zaken door (bijv.) de netwerkverbinding te dis/enablen of andere stunts uithalen maar dat is niet de taak van je applicatie maar die van de systeembeheerder. Meer dan een IOException vangen (en eventueel één extra poging, maar dat gaat al ver) zou ik dan ook niet doen.

I.p.v. dit proberen in je applicatie te vangen moet je, in the long run, natuurlijk gewoon zorgen dat de verbinding stabiel en fatsoenlijk functionerend is, de rest is allemaal symptoombestrijding.

[ Voor 13% gewijzigd door RobIII op 15-07-2011 09:06 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • D-Raven
  • Registratie: November 2001
  • Laatst online: 10-09 20:32
h199 schreef op donderdag 14 juli 2011 @ 13:46:
Hallo

Ik heb een probleem met het ophalen van bestanden vanop een netwerk locatie.
Het probleem is dat ik nu en dan de melding krijg : IOException kan het netwerkpad niet vinden.
Dit terwijl de locatie en bestand bestaan.

Als je dezelfde functie 30 sec later uitvoert dan lukt alles prima. Het probleem doet zich eigenlijk sporadisch voor, het kan dagen goed gaan voor dit probleem zich nog eens voort doet.

Ik vermoed dat het iets met time-out te maken heeft bij het opvragen van het bestand.
Is er een mogelijkheid dat ik deze time-out problemen kan opvangen ?


code:
1
2
3
4
5
6
7
8
Image afbeelding = null;
string strA = DB.GetPasFoto(person.RRN)

 //Afbeelding moet ingelezen worden 
MemoryStream ms = new MemoryStream(File.ReadAllBytes(resource.AFBEELDING_LOCATION + "\\" + strA));

afbeelding = Image.FromStream(ms);
ms.Close();


Kan iemand mij hierbij helpen ?

Alvast bedankt
Vrij normaal in mijn ervaring. Dit is standaard zodra je over een netwerk gaat spelen. Tuurlijk, als je een stabiel netwerk / netwerkverbinding hebt dan zou dit niet (veel) voor komen, maar de kans blijft aanwezig.

Gewoon een retry functionaliteit inbouwen. Ik geloof dat er al eens een topic over dit voorbij is gekomen waar wat voorbeelden in stonden.

edit:
spuit 11

Acties:
  • 0 Henk 'm!

  • Ciqniz
  • Registratie: Oktober 2002
  • Laatst online: 07-09-2023

Ciqniz

On the move...

Ik zou een backgroundworker de afbeelding continu proberen te laten downloaden met een max. van een aantal minuten totdat hij binnen is. Tot dat moment laat je gewoon een standaard afbeelding "bezig met laden" zien oid. Dit helpt je dan ook meteen bij tragere verbindingen (dat de applicatie niet gaat hangen).

Acties:
  • 0 Henk 'm!

  • P-Storm
  • Registratie: September 2006
  • Laatst online: 23:32
Je kunt kijken voor de Reactive Extensions. Hierbij kan je een retry uit pakken en zo nodig asynchroom ophalen.

Acties:
  • 0 Henk 'm!

  • h199
  • Registratie: Juli 2003
  • Laatst online: 23-07 18:11
Bedankt voor de info

De afbeeldingen op de achtergrond laten ophalen lijkt mij een prima oplossing.

Bedankt voor de link naar Reactive Framework (Rx) P-Storm, ik zal deze eens grondig doorlezen.
Pagina: 1