2016-10-25 1 views
0

Bonjour, j'ai des problèmes avec le service Web Microsoft Dynamics NAV 2009 R2!Index de service Web MS DynamicsNAV hors limites

Il y a un WEBMETHOD donné appelé OrderGoodsInsert qui a besoin des paramètres lLanguageId [int], lENR [Texte 250] [100]

lENR doit être un tableau de chaînes avec des valeurs telles que celles

  1. "Type de document"
  2. "Document No."
  3. "Numéro de ligne" - (vide à la création)
  4. "Insert utilisateur"
  5. "Modifier l'utilisateur"
  6. "Type" [0 - « », 1 - Compte G/L, 2 - Article 3 - ressources, 4 - Correction Atout, 5 - Charge (Article)]
  7. "Non" - code article
  8. Quantité

En utilisant le code C# Je tente d'appeler la méthode qui est ajouté comme référence de service Web à mon projet. Le code:

string[] arr = new string[8]; 
arr[0] = "1"; 
arr[1] = currentDocNo; 
arr[3] = "SU04"; 
arr[5] = "2"; 
arr[6] = item.Code; 
arr[7] = item.Amount; 
arr[2] = ""; 
arr[4] = ""; 

navWS.OrderGoodsInsert(1062, arr); 

Mais quand je fais je reçois

A first chance exception of type 'System.Net.WebException' 
occurred in System.dll 
A first chance exception of type 'System.Web.Services.Protocols.SoapException' 
occurred in System.Web.Services.dll 

L'erreur est que index out of bounds

Ai-je fait quelque chose de mal?

+0

A quoi ressemble la requête SOAP pour 'OrderGoodsInsert'? Est-ce une exception côté serveur ou côté client? Ajoutez la partie WSDL pour votre fonction à la question, s'il vous plaît. – Smartis

+0

En outre, quelle valeur contient 'item.Code'? – Smartis

+0

une chaîne par exemple "0067444" – HellOfACode

Répondre

0

Le problème était que le développeur de WS avait apporté des modifications et n'avait pas envoyé de nouvelle documentation. Une chaîne supplémentaire était nécessaire dans le tableau qui représentait l'étagère sur laquelle se trouvait l'article.

0

Votre méthode OrderGoodsInsert regarde la définition SOAP comme celui-ci

<sequence> 
    <element minOccurs="1" maxOccurs="1" name="lLanguageId" type="int"/> 
    <element minOccurs="1" maxOccurs="unbounded" name="lRec" type="string"/> 
</sequence> 

Il est un string attend pour la variable lRec et non un string[]. Essayez de convertir le tableau en une seule chaîne avec un délimiteur. Mais je ne suis pas sûr quel est le bon délimiteur pour NAV WebServices.

+0

Eh bien quand je fais comme je l'ai fait avec le tableau, je suis jeté au fichier 'reference.cs' qui contient la fonction que j'essaie d'appeler https://dpaste.de/Me2m il est généré lors de l'ajout de la référence web au projet.'Object [] results = this.Invoke (" OrderGoodsInsert ", nouvel objet [] {lLanguageId, lRec});' est la ligne qui lève l'exception. – HellOfACode

+0

@HellOfACode 'index hors limites 'signifie normalement que votre tableau est plus grand que prévu. Cette exception est-elle déjà la réponse du serveur Web? Se pourrait-il que l'une des colonnes de 'IRec' soit créée automatiquement et non exposée au WebService? Peut-être 'Line No'? – Smartis

+0

En essayant de contacter le développeur de la documentation pour notre société. Mettra à jour bientôt. – HellOfACode