[C#.NET] WebService error

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • aaajeetee
  • Registratie: Augustus 2002
  • Laatst online: 20-09 16:31
Ik ben bezig met een applicatie die gebruik maakt van een WebService.
Deze WebService is afhankelijk van de ingestelde taal. Stel iemand heeft "nl-NL", dan gebruikt 'ie de webservice van server A. Heeft de gebruiker "fr-FR" ingesteld, dan moet de webservice van server B gebruikt worden.

Ik heb hiervoor dus een aantal WebServices toegevoegd als WebReference. Afhankelijk van de ingestelde taal pakt ie WebService A of B.
Helaas krijg ik nu deze error:
System.InvalidOperationException: There is an error in XML document (2, 413). ---> System.ArgumentException: Item has already been added.
Als ik 1 webservice gebruik, werkt het prima.
Ik denk dat dit te maken heeft met het feit dat ik dezelfde webservices (hetzij op een andere server; maar de wsdl is wel gelijk) gebruik.
Kan iemand dit bevestigen en zo ja: hoe kan ik dit oplossen? Ik heb geen mogelijkheid om de URL van de wsdl 'on the fly' te wijzigen.

[ Voor 66% gewijzigd door aaajeetee op 26-03-2009 12:35 ]


Acties:
  • 0 Henk 'm!

  • BM
  • Registratie: September 2001
  • Laatst online: 08:19

BM

Moderator Spielerij
aaajeetee schreef op donderdag 26 maart 2009 @ 12:34:
Kan iemand dit bevestigen en zo ja: hoe kan ik dit oplossen? Ik heb geen mogelijkheid om de URL van de wsdl 'on the fly' te wijzigen.
Hoezo dat niet? :?

Als je een instantie aanmaakt van je webservice(proxy), heb je toch gewoon een URL propery die je kunt zetten? 2 WebReferences aanmaken voor services die feitelijk exact gelijk zijn lijkt me nogal raar.

Xbox
Even the dark has a silver lining | I'm all you can imagine times infinity, times three


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Je kan toch gewoon de Url property zetten?

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Waarom geef je de culture niet gewoon mee als soap header en laat je de webservice gewoon de response in de gewenste taal terug geven? Want straks moet je ook Engels, Duits en Spaans ondersteunen. Hetgeen wat de webservice zal niet veranderen.

Een van de meest gebruikte oplossingen is in een 'los' resource bestand de teksten opnemen. Op basis van de culture uit de soap header laad je het juiste resource bestand en middels string.Format() geef je het resultaat terug. Ik ga er even vanuit dat je teksten terug krijgt, want het formateren van een getal of datum hoort niet op de webservice (business) thuis, maar bij de client (presentatie). In plaats van een resource dictionary zou je natuurlijk ook een xml document of een DataSet kunnen gebruiken.

If it isn't broken, fix it until it is..


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Niemand_Anders schreef op donderdag 26 maart 2009 @ 13:25:
Waarom geef je de culture niet gewoon mee als soap header en laat je de webservice gewoon de response in de gewenste taal terug geven? Want straks moet je ook Engels, Duits en Spaans ondersteunen. Hetgeen wat de webservice zal niet veranderen.

Een van de meest gebruikte oplossingen is in een 'los' resource bestand de teksten opnemen. Op basis van de culture uit de soap header laad je het juiste resource bestand en middels string.Format() geef je het resultaat terug. Ik ga er even vanuit dat je teksten terug krijgt, want het formateren van een getal of datum hoort niet op de webservice (business) thuis, maar bij de client (presentatie). In plaats van een resource dictionary zou je natuurlijk ook een xml document of een DataSet kunnen gebruiken.
Dat is inderdaad ook hoe wij de localisatie bij onze webservices regelen.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • aaajeetee
  • Registratie: Augustus 2002
  • Laatst online: 20-09 16:31
Het gaat niet zozeer om de taal, maar wel om gebruikersinformatie. De gebruikers op de website zijn per land in een database opgeslagen. Afhankelijk van de taal-code wordt dus de correcte database gepakt.

Daarnaast kan ik uiteraard gewoon de Url property wijzigen, maar dan ben ik weer afhankelijk van een bestand waar deze gegevens in staan. Als de gebruiker dat bestand verwijderd, kan ik dus de Url niet meer opvragen (misschien beetje paranoïde).

Ik denk dat er niets anders opzit dan dit wel te implementeren aangezien ik dus niet meerdere (dezelfde) WebServices naast elkaar kan zetten.

Bedankt voor het meedenken!

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
aaajeetee schreef op donderdag 26 maart 2009 @ 13:37:
Het gaat niet zozeer om de taal, maar wel om gebruikersinformatie. De gebruikers op de website zijn per land in een database opgeslagen. Afhankelijk van de taal-code wordt dus de correcte database gepakt.

Daarnaast kan ik uiteraard gewoon de Url property wijzigen, maar dan ben ik weer afhankelijk van een bestand waar deze gegevens in staan. Als de gebruiker dat bestand verwijderd, kan ik dus de Url niet meer opvragen (misschien beetje paranoïde).

Ik denk dat er niets anders opzit dan dit wel te implementeren aangezien ik dus niet meerdere (dezelfde) WebServices naast elkaar kan zetten.

Bedankt voor het meedenken!
Wat is het verschil tussen runtime kiezen welke web-service je gebruikt en welke Url je zet? Als de gebruiker welk bestand verwijderd?

En dan nog kan je het toch gewoon server-side regelen? Je kan op de server aan de hand van de header kiezen welke databse je gebruikt.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • aaajeetee
  • Registratie: Augustus 2002
  • Laatst online: 20-09 16:31
Ik heb het inmiddels opgelost door inderdaad de Url property te wijzigen (deze wordt opgehaald uit een .ini file).
Had het liever met meerdere WebServices gehad, maar wellicht is dit ook wel netter. Zo worden er geen niet-gebruikte WebServices meegeleverd.

Bedankt voor het meedenken!

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Nu online
aaajeetee schreef op donderdag 26 maart 2009 @ 13:37:
Het gaat niet zozeer om de taal, maar wel om gebruikersinformatie. De gebruikers op de website zijn per land in een database opgeslagen. Afhankelijk van de taal-code wordt dus de correcte database gepakt.
Ik zit in belgie en m'n Windows culture is ingesteld op nl-BE en in IE is ze ingesteld op en-US en in FF op nl-BE ...

Enneh, dus heb je voor ieder land een aparte database ? 8)7

https://fgheysels.github.io/

Pagina: 1