Ik ben bezig met het maken van een toolbar voor Internet Explorer die door middel van SOAP wat gegevens ophaalt van een server. Een aantal aanroepen naar die webservice verlopen zonder problemen, maar er is er 1 die een ArgumentException blijft gooien met de onderstaande informatie:
De onderstaande code lijkt de exception te triggeren:
Zowel application.name als this.shared.sessid hebben geldige waarden.
Bij het aanroepen van getLoginAsync op de proxyklasse gaat het dus fout. Wat ik vreemd vind is dat de methoden in het .net framework de exception lijken te veroorzaken en dat de fout niet direct te herleiden is naar een bepaald stuk van mijn code of de proxyklasse. Ik zit al minstens een week op deze fout te hameren...
De SOAP webservice heb ik ook zelf gemaakt, maar aangezien de FireFox versie van de toolbar foutloos werkt, en ik geen SOAP fout naar m'n hoofd krijg heb ik aangenomen dat hier de fout niet zit.
Hoofdvraag: Wat kan deze fout veroorzaken, en waarom krijg ik geen informatie over waar de fout vandaan komt in mijn eigen code?
Bijvraag: Wat is het wezenlijke verschil tussen de wsdl commandline-tool en een web service reference? Is het verstandiger om deze laatste te gebruiken?
Alvast bedankt voor de hulp
Door middel van de 'wsdl' tool op de visual studio command line heb ik een proxyklasse laten genereren. Deze methode lijkt het beste voor mij te werken, aangezien ik een web service reference niet aan de praat krijg.System.ArgumentException: Item is al toegevoegd. Sleutel in woordenboek: System.Object Sleutel die wordt toegevoegd: System.Object
bij System.Collections.Hashtable.Insert(Object key, Object nvalue, Boolean add)
bij System.Collections.Hashtable.Add(Object key, Object value)
bij System.Collections.Hashtable.SyncHashtable.Add(Object key, Object value)
bij System.Web.Services.Protocols.SoapHttpClientProtocol.InvokeAsync(String methodName, Object[] parameters, SendOrPostCallback callback, Object userState)
De onderstaande code lijkt de exception te triggeren:
C#:
1
2
3
4
5
6
7
8
9
10
| public void getLogin(Application application) { login_request request = new login_request(); request.application_name = application.name; request.phpsessid = this.shared.sessid; // The line below raises the soap_getLoginCompleted() // eventhandler when the SOAP request is completed. soap.getLoginAsync(request); } |
Zowel application.name als this.shared.sessid hebben geldige waarden.
Bij het aanroepen van getLoginAsync op de proxyklasse gaat het dus fout. Wat ik vreemd vind is dat de methoden in het .net framework de exception lijken te veroorzaken en dat de fout niet direct te herleiden is naar een bepaald stuk van mijn code of de proxyklasse. Ik zit al minstens een week op deze fout te hameren...
De SOAP webservice heb ik ook zelf gemaakt, maar aangezien de FireFox versie van de toolbar foutloos werkt, en ik geen SOAP fout naar m'n hoofd krijg heb ik aangenomen dat hier de fout niet zit.
Hoofdvraag: Wat kan deze fout veroorzaken, en waarom krijg ik geen informatie over waar de fout vandaan komt in mijn eigen code?
Bijvraag: Wat is het wezenlijke verschil tussen de wsdl commandline-tool en een web service reference? Is het verstandiger om deze laatste te gebruiken?
Alvast bedankt voor de hulp