WebServices en csharp : erreur out of range !

zigxag Messages postés 142 Date d'inscription jeudi 10 février 2005 Statut Membre Dernière intervention 2 octobre 2008 - 10 mars 2005 à 20:18
zigxag Messages postés 142 Date d'inscription jeudi 10 février 2005 Statut Membre Dernière intervention 2 octobre 2008 - 14 mars 2005 à 20:39
Bonjour,
Je sollicite votre aide car je ne trouve pas ce qu'il ne va pas dans mon code source.


J'ai une fonction qui appelle un service web. Voici ma fonction :


Object[] objectsStoring = null;
objectsStoring = webcamWebServices.ValiderConfig(cbVideoDevice.SelectedIndex, cbAudioDevice.SelectedIndex);


...voici le code appelé, généré par VS.net à partir de mon service web :
object[] results = this.Invoke("ValiderConfig", new object[] {videoDevice, audioDevice});
return ((object[])(results[0]));


...et voici ma webmethode :
[WebMethod]
public ArrayList ValiderConfig (int videoDevice, int audioDevice)
{
return (WebCamera.ValiderConfig (videoDevice, audioDevice));
}



La méthode ValiderConfig renvoi une ArrayList à 2 colonnes contenant chacune une valeur "string".


Lorsque je lance le tout, une erreur m'informe "Server was unable to process request. --> Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index".


Quelqu'un peut-il me dire pourquoi j'ai une telle erreur dans mon contexte ?


Merci d'avance pour votre aide !!!


Xavier.

4 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
11 mars 2005 à 09:03
D'apres le message d'erreur ça doit coincer ici :
return ((object[])(results[0]));
Apparemment le tableau results est vide.
Sinon il y a un truc qui m'étonnes : tu fais ta sélection de device sur le "client" et tu demande au "serveur" de la valider : cqu'est ce qui te garanti qu'ils ont le même matériel (et les même index pour les device) ?

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
zigxag Messages postés 142 Date d'inscription jeudi 10 février 2005 Statut Membre Dernière intervention 2 octobre 2008 12
11 mars 2005 à 10:32
Merci pour ta réponse rapide...

En effet, j'ai oublié de préciser que le débogeur s'arrette sur la ligne : "object[] results = this.Invoke("ValiderConfig", new object[] {videoDevice, audioDevice});" avant de passer sur le "return".

Je vais également préciser comment marche mon petit programme...
Sur le serveur, il y a des webcams branchées avec leurs pilotes audios. Lorsqu'on se connecte à distance sur le serveur via par exemple un Smartphone, un Webservice nous renvoi la liste des devices videos (webcam) et audios "pilotes audio" présents sur le serveur. On choisi alors sur notre Smartphone la webcam que l'on veut utiliser ainsi que le pilote audio et on valide....et c'est là que ca plante...

En espérant avoir éclairer le problème...

Xavier.
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
11 mars 2005 à 19:15
Ha
Je vois que tu passes l'index de la sélection dans les ComboBox : est tu sur que les index sont concordants ?
Tu devrais plutot stocker le couple nom/index de chaque device que te donne le webservice et repasser cet index là.
Enfin là je ne vois plus que ça qui pourrait clocher

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
zigxag Messages postés 142 Date d'inscription jeudi 10 février 2005 Statut Membre Dernière intervention 2 octobre 2008 12
14 mars 2005 à 20:39
Bonjour !
J'ai enfin trouvé l'erreur...qui n'avait en fait rien à voir avec ce que l'on pensait... En effet, j'utilise un fichier app.config pour définir le framerate, la taille de la video etc. Mais ce fichier ne marche qu'avec un .exe et non avec une DLL. Voilà pourquoi le programme plantait en plein milieu ! AArrgghhhh !
Je te remercie pour tout, et te souhaite bonne continuation !
0
Rejoignez-nous