[c#]wsdl file gebruiken in windowsapplicatie

Pagina: 1
Acties:

  • Jochemmol
  • Registratie: Augustus 2004
  • Laatst online: 07-05-2014
Ik ben bezig met een windows applicatie. Ik heb nu een probleem waar ik niet uit kom.

Ik heb met zend studio een php file gemaakt die in een bestand schrijft. Dit werkt. nu heb ik daar een WSDL file van gemaakt.

Nu heb ik in microsoft visual C# express een windows applicatie gemaakt. dan wil ik gebruik maken van de php functie.

Het importeren van de wsdl file gaat prima. Hij vind netjes 1 functie.

in mijn c# functie doe ik dit.
code:
1
2
webservice.wsdlService service = new webservice.wsdlService();
service.wsdlfunctie();

compilen lukt perfect en mijn applicatie word gestart. Maar als ik op de button klik geeft hij een error. Hij geeft de volgende error.
code:
1
2
InvalidOperationException was unhandled;
path property must be set befor calling the Send method

Ik kom er niet meer uit. Ik doe helemaal geen Send. Ik snap niet waarom deze error komt. De functie is bekent. Compilen lukt wat kan er fout zijn :?

Ik zie het echt niet meer _/-\o_

Jochemmol


  • whoami
  • Registratie: December 2000
  • Laatst online: 18:04
Wat zegt de InnerException ?
Wat vind je in de stacktrace ?

't Is een beetje moeilijk om hier iets zinnigs op te zeggen, aangezien er heel wat informatie ontbreekt. Die informatie kan je bekomen door je app eens te debuggen. Stap eens regel voor regel door je code, kijk waar de exception exact optreedt. Bekijk de innerexception en de stacktrace. Dit zou je al een stap vooruit moeten helpen in het bepalen van het exacte probleem.

https://fgheysels.github.io/


  • Jochemmol
  • Registratie: Augustus 2004
  • Laatst online: 07-05-2014
ow sorry, voor de gebrekkige informatie.

Hij gaat fout op de volgende regel
code:
1
2
3
4
5
service.wsdlfunctie();

InnerException:null
stacktrace :
"   at System.Web.Services.Protocols.WebClientProtocol.GetWebRequest(Uri uri)\r\n   at System.Web.Services.Protocols.HttpWebClientProtocol.GetWebRequest(Uri uri)\r\n   at System.Web.Services.Protocols.SoapHttpClientProtocol.GetWebRequest(Uri uri)\r\n   at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)\r\n   at WindowsApplication1.jochem.jochemService.molenaar() in C:\\Documents and Settings\\Jochemmol\\Local Settings\\Application Data\\Temporary Projects\\WindowsApplication1\\Web References\\jochem\\Reference.cs:line 77\r\n   at WindowsApplication1.Form1.button1_Click(Object sender, EventArgs e) in C:\\Documents and Settings\\Jochemmol\\Local Settings\\Application Data\\Temporary Projects\\WindowsApplication1\\Form1.cs:line 21\r\n   at System.Windows.Forms.Control.OnClick(EventArgs e)\r\n   at System.Windows.Forms.Button.OnClick(EventArgs e)\r\n   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)\r\n   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)\r\n   at System.Windows.Forms.Control.WndProc(Message& m)\r\n   at System.Windows.Forms.ButtonBase.WndProc(Message& m)\r\n   at System.Windows.Forms.Button.WndProc(Message& m)\r\n   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)\r\n   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)\r\n   at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)\r\n   at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)\r\n   at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)\r\n   at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)\r\n   at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)\r\n   at System.Windows.Forms.Application.Run(Form mainForm)\r\n   at WindowsApplication1.Program.Main() in C:\\Documents and Settings\\Jochemmol\\Local Settings\\Application Data\\Temporary Projects\\WindowsApplication1\\Program.cs:line 17\r\n   at System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args)\r\n   at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)\r\n   at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()\r\n   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)\r\n   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)\r\n   at System.Threading.ThreadHelper.ThreadStart()"

Deze informatie heb ik rechtuit gekopieerd. Ik ga nu zelf even zoeken wat dit allemaal inhoud.
Mochten er ondertussen opmerkingen zijn hoor ik ze graag.
_/-\o_

Jochemmol


  • whoami
  • Registratie: December 2000
  • Laatst online: 18:04
Weet je webservice naar waar hij moet connecten ?
Waar jij in je C# programma mee 'praat' is een proxy class voor die webservice, en die proxy class zal dus de webservice zelf aanspreken.

Hoe heb je die connectie met de webservice gemaakt in je IDE ?

Ben je er zeker van dat je proxy class naar de correcte webservice wijst ? Maw: ben je zeker dat de Url property van je proxy object juist is ? (service.Url )

https://fgheysels.github.io/


  • Jochemmol
  • Registratie: Augustus 2004
  • Laatst online: 07-05-2014
Ik heb de webserice toegevoegd met mijn IDE.

Ik heb in het menu gekozen voor: Add Web reference.

Ik heb zelf de Url niet gezet. Ik dacht dat dat dat gebeurde bij het toevoegen. Moet ik bij service.Url gewoon de url van de webservice zetten :?

Ik ga dat nu proberen ik post zo mijn resultaat (Helaas geen verandering)

[ Voor 28% gewijzigd door Jochemmol op 07-01-2007 18:02 ]

Jochemmol


  • whoami
  • Registratie: December 2000
  • Laatst online: 18:04
Normaal gezien, als je Add Web Reference doet, wordt die Url automatisch gezet binnen je proxy class.

Kan het niet zijn dat het een exceptie is die gegooid wordt door je web-service zelf ? Wat doet die webService eigenlijk ?

[ Voor 38% gewijzigd door whoami op 07-01-2007 18:03 ]

https://fgheysels.github.io/


  • Jochemmol
  • Registratie: Augustus 2004
  • Laatst online: 07-05-2014
In de webservice is een php functie benoemd. Deze functie schrijft alleen tekst naar een bestand.

Alle bestanden staan op mijn computer omdat ik nog aan het testen ben. Waar ik ook zoek op google. De manier van webservice gebruiken gaat altijd goed. alleen bij mij niet. Misschien is die file niet goed maar die is gewoon gemaakt met de zend studio 8)7

De wsdl file staat hier. http://www.jochemmolenaar.nl/test/jochem.wsdl

[ Voor 10% gewijzigd door Jochemmol op 07-01-2007 18:14 ]

Jochemmol


  • whoami
  • Registratie: December 2000
  • Laatst online: 18:04
Toch even google aangezwengeld. Na 2 minuten zoeken:
Web Service Path Property Problem
Here's a quick one. If you call a Web service and you get an error similar to

"...Path property must be set before calling the Send method..."

then check that the <service> section of the WSDL file has an element similar to <soap:address location="http://localhost/myservice/myservice.asmx" />. You may find that the location attribute is empty. Add the correct URL and you should be good to go.
Volgens mij moet dit hetzelfde doen als het zetten van de Url property. Toon eens de code die je gebruikt hebt om die url property te zetten ?

https://fgheysels.github.io/


  • Jochemmol
  • Registratie: Augustus 2004
  • Laatst online: 07-05-2014
Volgens mij is die leeg. Maar zend studio vult hem niet 8)7

De wsdl file staat hier. http://www.jochemmolenaar.nl/test/jochem.wsdl

Jochemmol


  • whoami
  • Registratie: December 2000
  • Laatst online: 18:04
Lees nog eens m'n laatste post.... check de wsdl file, zie wat er fout aan is... :/

Trouwens: toon de code eens die je gebruikt hebt voor het zetten van die Url prpoerty ?

[ Voor 67% gewijzigd door whoami op 07-01-2007 18:19 ]

https://fgheysels.github.io/


  • Jochemmol
  • Registratie: Augustus 2004
  • Laatst online: 07-05-2014
Ik heb het adress ingevoerd. Nu nogmaals testen. Nu weer een error met een andere melding.

code:
1
{"The request failed with HTTP status 405: Method not allowed."}

Even gegoogled en toen zag ik dat dat kan komen doordat op de map waarin de wsdl file staat niet een .wsdl extention heeft.

Hij gaf een DLL file. Die had ik niet daar staan maar een andere.
code:
1
"C:\Program Files\Common Files\MSSoap\Binaries\mssoap1.dll"

Maar nu lukt het nog niet nog steeds dezelfde error
code:
1
{"The request failed with HTTP status 405: Method not allowed."}

8)7

[ Voor 8% gewijzigd door Jochemmol op 07-01-2007 18:31 ]

Jochemmol


  • whoami
  • Registratie: December 2000
  • Laatst online: 18:04

[ Voor 26% gewijzigd door whoami op 07-01-2007 18:35 ]

https://fgheysels.github.io/


  • Jochemmol
  • Registratie: Augustus 2004
  • Laatst online: 07-05-2014
Ik heb hem het wsdl file kan gelezen worden. _/-\o_

Ik krijg nu een andere erro
code:
1
{"Client found response content type of 'text/html', but expected 'text/xml'.\r\nThe request failed with the error message:\r\n--\r\n<html><head><title>Error</title></head><body>Kan opgegeven module niet vinden. </body></html>\r\n--."}

Alleen maak met mijn php functie helemaal geen html 8)7

Ik heb het php bestand los getest en het werkte gewoon. Het geke is ook dat het een nederlandse error is :?

[ Voor 5% gewijzigd door Jochemmol op 07-01-2007 18:51 ]

Jochemmol


  • Jochemmol
  • Registratie: Augustus 2004
  • Laatst online: 07-05-2014
Ik kom er niet uit |:( De hele avond nog zitten zoeken, mijn WSDL file is goed. Mijn c# werkt ook. en mijn php functie is ook goed.

Ik begrijp niet waarom ik dan een error krijg.
Jochemmol schreef op zondag 07 januari 2007 @ 18:38:
code:
1
{"Client found response content type of 'text/html', but expected 'text/xml'.\r\nThe request failed with the error message:\r\n--\r\n<html><head><title>Error</title></head><body>Kan opgegeven module niet vinden. </body></html>\r\n--."}

Alleen maak met mijn php functie helemaal geen html 8)7

Ik heb het php bestand los getest en het werkte gewoon. Het gekke is ook dat het een nederlandse error is :?

[ Voor 7% gewijzigd door Jochemmol op 08-01-2007 09:24 ]

Jochemmol


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Jochemmol schreef op maandag 08 januari 2007 @ 09:24:
Ik kom er niet uit |:( De hele avond nog zitten zoeken, mijn WSDL file is goed. Mijn c# werkt ook. en mijn php functie is ook goed.

Ik begrijp niet waarom ik dan een error krijg.
Tja, als alles goed is en je verder geen info wil geven kunnen wij het ook alleen maar goed vinden. Stel nou eens dat er wel ergens een fout zit en geef voor de lol eens wat meer informatie, is die wsdl file die je liet zien je huidige versie? Heb je de letterlijke request en response messages eens bekeken? Etc. etc.

{signature}


  • TheNameless
  • Registratie: September 2001
  • Laatst online: 07-02 21:38

TheNameless

Jazzballet is vet!

Is er niet iets fout bij je PHP installatie?
Ik ben geen PHP expert, maar misschien dat PHP een component niet kan laden dat te maken heeft met webservices?

Dat zou iig de nederlands error en de HTML verklaren :)

Ducati: making mechanics out of riders since 1946


  • Jochemmol
  • Registratie: Augustus 2004
  • Laatst online: 07-05-2014
Ja de wsdl file die ik geef is nog steedst dezelfde.

TheNameless bedankt voor je opmerking. Dat ik dat zelf niet heb bedacht.

In eerste instantie had ik geen .wsdl extentie in IIS. Die heb ik toegevoegd en nu kan hij de module niet vinden.
code:
1
Kan opgegeven module niet vinden

Ik denk dat IIS de mssoap1.dll niet kan vinden. Dat is toch raar omdat ik dmv browse heb toegevoegd.

Nu weet ik in elk geval waar ik waarschijnlijk moet kijken. _/-\o_

Ik ga even uitzoeken wat ik fout heb gedaan met het toevoegen van de extentie (zoals ik hierboven had beschreven welke bestanden ik had toegeveod) |:(

Jochemmol


  • Jochemmol
  • Registratie: Augustus 2004
  • Laatst online: 07-05-2014
Ik snap er niks van.

Als ik een wsdl file gebruik met php heb ik geen .wsdl extention nodig in mijn IIS server.

Ik voeg de extention .wsdl toe en dan kan de opgegeven module niet gevonden worden |:(

Ik heb toen ipv de MSSOAP1.DLL de wsdl.exe(uit de visual studio map) als bestand toegevoegd. Dat gaf dezelfde melding.

Waar doe ik het fout? Ik kom er niet meer uit. C# moet toch met webservices overweg kunnen?

Jochemmol


  • whoami
  • Registratie: December 2000
  • Laatst online: 18:04
Ik snap niet waarom jij zit te foefelen in IIS met het adden van een extension ? Er is toch niets die daar op duid ? waar heb je gelezen dat je dat moest doen ?

https://fgheysels.github.io/


  • Jochemmol
  • Registratie: Augustus 2004
  • Laatst online: 07-05-2014
Ik denk dat dat moet omdat ik de melding kreeg
code:
1
{"The request failed with HTTP status 405: Method not allowed."}

Na wat googlen vond ik deze site.
http://www.c-sharpcorner....55-476f-a3a3-074937b440f2
Ik alles uitgevoerd. helaas had ik niet dat dll file maar mssoap1.dll.
Toen ik IIS resette teste ik het nogmaals in c# en kreeg ik de melding.
code:
1
<html><head><title>Error</title></head><body>Kan opgegeven module niet vinden. </body></html>

Ik denk dat IIS dus de module (dll file) niet kan vinden. Dus daar ben ik nu mee bezig om te kijken wat dat kan zijn.

Jochemmol


  • whoami
  • Registratie: December 2000
  • Laatst online: 18:04
dat denk je ... al eens gegoogled op die foutmelding (kan opgegeven module niet vinden ~ of de engelse variant: The specified module could not be found

Dit heeft volgens mij trouwens niets met IIS te maken, maar met je PHP configuratie

https://fgheysels.github.io/


  • Jochemmol
  • Registratie: Augustus 2004
  • Laatst online: 07-05-2014
Dat is raar. :?

Ik begrijp dat niet de extentie php_soap.dll en php_xmlrpc.dll staan aan .

Maar toch nog het probleem. Maar wat ik vooral niet snap is dat als ik het met php zelf doe dus een php bestand maak en dan de webservice aanroepen werkt het wel zoals ik dat wil |:(

Daarom dacht ik dat het niet aan php zou liggen :?

Jochemmol

Pagina: 1