C# client how to invoke wsdl file - c#

My customer gave me a .wsdl file to access their webservices. Using VS2008 I can create a project, but I don't know how to use the .wsdl file in it.

You don't invoke WSDL file, you add service reference from the file.
To add reference, right click on the project, select Add Service Reference. Paste path to your wsdl file and hit Go.
If you want to use legacy Web Service client, select Add Web Reference and paste path to the wsdl file from there.
I recommend to use WCF (Add Service Reference option).
To use the service reference add code like this:
var serviceClient = new ServiceReferenceName.MyClassClient();
serviceClient.DoSomething();
You also need to update config file with the server URL that you customer should provide you with:
<client>
<endpoint address="http://UrlFromYourCustomerHere"
binding="basicHttpBinding"
bindingConfiguration="xxx"
contract="MyServiceReference.xxx"
name="xxx/>
</client>

A Web reference enables a project to
consume one or more XML Web services.
Use the Add Web Reference Dialog Box
to search for Web services locally, on
a local area network, or on the
Internet.
After adding a Web reference to your
current project, you can call any
methods exposed by the Web service.
To add a Web Reference
On the Project menu, click Add Web Reference.
In the URL box of the Add Web Reference dialog box, type the URL to obtain the service description of the Excel Web Services, such as http:////_vti_bin/excelservice.asmx or http:///_vti_bin/excelservice.asmx. Then click Go to retrieve information about the Web service.
Note Note:
You can also open the Add Web Reference dialog box in the Solution Explorer pane by right-clicking References and selecting Add Web Reference.
In the Web reference name box, rename the Web reference to ExcelWebService.
Click Add Reference to add a Web reference for the target Web service.
Visual Studio downloads the service description and generates a proxy class to interface between your application and Excel Web Services.
Read
How to: Add and Remove Web References

Related

C# - How to add a SOAP web service reference to my project?

I am attempting to add a web service reference from an example project into my current VS 2015 C# project. This is what I have in the example project:
To move it over to my new project, I have attempted to copy and paste the "Address" field into my project by right clicking my project and selecting "Add Service Reference". When I do this I get the following error:
There was an error downloading 'http://myserver.com/MyServiceExample.svc?wsdl/$metadata'.
The remote name could not be resolved: 'myserver.com'
Metadata contains a reference that cannot be resolved: 'http://myserver.com/MyServiceExample.svc?wsdl/$metadata'.
There was no endpoint listening at 'http://myserver.com/MyServiceExample.svc?wsdl/$metadata that could accept the message.
This is often caused by an incorrect address or SOAP action.
See InnerException, if present, for more details.
The remote name could not be resolved: 'myserver.com'
If the service is defined in the current solution, try building the solution and adding the service reference again.
How can I go about adding this service reference into my project? I have tried adding it in by using the VS 2015 CMD Prompt with the WSDL /verbose command, but this does not seem to be working. I have the project files and wsdl files for the example, but I cannot get them to work on my solution.
Start your web-service project in iis express by launch debug session then when you get temporary url of your service (like http://localhost:8000/MyServiceExample.svc) you can retrive wsdl from it.
Just replace myserver.com part of url on new one when adding a service reference.
Here you can read how adding service refence is working but in general you need to retrive contract from deployed web service (wsdl) from which vs generates new classes.
Later you should change service url in web.config on deployed one.

How can I use a web service from local WSDL file?

I have been given a WSDL file from a provider and I have added it as a Service Reference to my C# project in Visual Studio 2013.
I can see the relevant classes I need but when I call the functions on them nothing is transmitting from my program. I have configured Wireshark to listen but no data is coming from my program when I run it.
Where in Visual Studio can I see the IP address/URL that the web service is trying to connect to? At some point I assume it establishes a HTTP connection, where can I see this code to check the URL/IP address?
The WSDL file does not contain the address of the service endpoint. You probably created a Service Reference or a Web Reference, which has created a client class for you. If you instantiate this client (lets call it ExampleClient) with the default constructor:
var serviceCLient = new ExampleClient();
Then the URI will be the path of the WSDL file you imported. This mostly works fine if you import a generated WSDL file file the actual service URI, but in your case, you need to tell it where the service is running. You can either pass the service URI in the constructor:
var serviceCLient = new ExampleClient("http://example.com/service/endpoint");
Or edit your app.config or web.config (depending on project type). It will have something like this:
<system.serviceModel>
<client>
<endpoint address="C:\path\to\your.wsdl" etc etc etc... />
</client>
</system.serviceModel>
And you should change the address attribute there.
For old style web references, you can right click on the reference in Visual Studio (under your project in the Web References folder, and select "properties". The properties screen contains a "Web Reference Url" which you can edit to point to the actual service URI.

Why my webservice method is not updating its parameters in the wsdl?

I modified my webservices and added one new parameter. I re-compile everything and when I ran in my localhost everything works fine. BUT when I deployed into my IIS server the wsdl is not being updated and it simply do not show my new parameter.
What do I have to do for my wsdl to be updated?
Right click on the web reference and click update. It will update the reference.cs file. Then compile and deploy. Make sure it reference the new reference.cs file.
When you say the wsdl is not being updated to show the new parameter how are you trying to access the wsdl? if you are trying to access http://myserver/myservice/service.asmx?wsdl and the updated wsdl is not showing up, try restarting the web application/website on IIS that hosts the service.asmx. If that doesn't solve it try redeploying the code. If on the other hand you are stating that a client application that is consuming the service you have hosted on IIS cannot see the updated wsdl you need to check the code of the client application not your service. If it has a web reference pointing to the URL where your service is hosted then you need to do what Azhar suggested and right click on the web reference and click update. If it has a proxy class generated by wsdl.exe then regenerate the proxy class by using wsdl.exe as follows
wsdl /namespace:MyCompany.MyApp.Services /out:C:\MyServiceProxy.cs http://myserver/myservice/service.asmx
and update the client project with the new MyServiceProxy.cs file which should contain the method with the updated parameters.

Update Service Reference is not working in WCF

I am using VS 2012.
I add services reference to my WPF project, but when I've changed my services and updated service reference my Reference.svcmap -> Reference.CS file will be blank and I can't use reference anymore. I can see it in project, but I can't use.
My settings of Services References are :-
Reference.cs file
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.17929
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
uncheck the Reuse types in referenced assemblies checkbox and put address of your new service in Address textbox.
While configuring service reference append /mex (address of your end point with mexHttpBinding ) at the end of your service URL.
https://service.domain.com/serivce1.svc/mex
This will enable metadata exchange. So Reference.cs will be modified / added (if you are adding service reference for the first time).
Edit : On analysis I found that this issue happens when a service (which implements one ServiceContract) is exposed via more than one end point.
This issue can be avoided by using different Service Contracts (Interface) for each end point and making the service class (service1) implement all these Interfaces.
If you cannot browse the URL, then you will not be able to add the service reference. Try hosting your web service locally in IIS. When you're able to browse the URL, then you can add the service reference.
Unchecking the reuse option the Update Service option works fine.
There are few things you can do first Clean the solution, delete the output directory and the service reference. Restart the Visual Studio and re configure the web service.
It can be caused by Team Foundation source control.
Try to right click on the service ref and choose "Check out for edit..."
Than update service reference again.

Implement mock service with wsdl tool

I'm currently following this tutorial to learn how to implement a mock web service:
http://iandykes.blogspot.nl/2008/06/creating-mock-web-services-in-net.html
The web service that i'm using is a public web service: http://www.webservicex.net/CurrencyConvertor.asmx?WSDL
So i used the wsdl.exe tool to generate a class for that service, like it is explained in the tutorial. I also added the generated .cs file to my Solution project.
I then did the following in Visual Studio to add the Web Service:
Right clicked on my project -> Add Service Reference -> Advanced -> Add Web Reference
In there i added the URL to the web service and then hit the Add Reference button. So now i have a Web References folder in my project with a CurrencyProxy in it (that is how i named it).
The next step that i have to do according to the tutorial is:
In the code behind for this Web Service, change the class definition
so that it implements the interface in the generated code.
That is where i'm actually stuck. Where can i find the code behind file of the Web Service? I'm not sure what to do here.
Could anyone help me out?
When you add Web Service to your project, there will be YourWebService.asmx and YourWebService.asmx.cs under it. In YourWebService.asmx.cs, just replace System.Web.Services.WebService with your interface, which was generated earlier. Implement this interface as you wish and that's it, mock service's done.

Categories

Resources