WCF / ASMX :: Consume Data Service In Client Application
Sep 7, 2010
I am working on WCF Data service which imported stored procedure, as below.
[WebGet]
public List<GetMTSearchResultTest_Result> GettMTSearchResultTest()
{
MediaMarketResearch_PRODEntities ent = new MediaMarketResearch_PRODEntities();
return ent.GetMTSearchResultTest().ToList();
}
when i consuming this in my client application it says error as "The closed type MMRClient.MMRServiceReference.GetMTSearchResultTest_Result does not have a corresponding element settable property." I am getting this error while bind to the grid view as below.
DataServiceContext context = new DataServiceContext(new [URL])); IEnumerable<GetMTSearchResultTest_Result> empResult = context.Execute<GetMTSearchResultTest_Result>(new Uri [URL];
I want to create a WCF Service to transfer data to our clients application(WPF). The Data I am trying to send is as follows.
ID Code Description unit Rate 1 104200000 LIVE GOAT NOS 25 2 104200000 LIVE GOAT2 NOS 25 3 104200030 LIVE GOAT3 KGS 10 4 104202030 Water LTR 5
and so on till ~ 11000 records.
What I have done so far is. Created a service which return a list of data.
public List<Classes.TariffData> GetTariffData() { var currentTariffData = new List<Classes.TariffData>(); using (var myConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString)) { const string query = "select a.ID,a.Code,a.Description,a.unit,a.rate,a.rate3 from tariff.dbo.tariffdata a, tariff.dbo.code_history b where a.id = b.id and b.endofvalidity is null"; using (var myCommand = new SqlCommand(query, myConnection)) { using (var ad = new SqlDataAdapter(myCommand)) { var dt = new DataTable("tariff"); ad.Fill(dt); currentTariffData.AddRange(from DataRow row in dt.Rows select new Classes.TariffData { Id = int.Parse(row["Id"].ToString()), Code = row["Code"].ToString(), Description = row["Description"].ToString(), Unit = row["unit"].ToString(), Rate = row["rate"].ToString(), Rate3 = row["rate3"].ToString() }); return currentTariffData; } } } } Class is as follows public class TariffData { public int Id { get; set; } public string Code { get; set; } public string Description { get; set; } public string Unit { get; set; } public string Rate { get; set; } public string Rate3 { get; set; } }
If i Limit the number of data by using const string query = "select top 300 a.ID,a.Code,a.Description. The Service works fine. But if I remove the top 300 part I get an error. What is your advice if I want a service to allow our client applications to update their data by using WCF. (11000 records.) I am using visual Studio 2010. C# .Net 4.0
1. ADO.NET Data Service with Visual Studio 2008 and the .NET 3.5 SP
2. WCF Data Service using Visual Studio 2010 and they both work in IE.
I can make a Service Reference to the first one with VS2008.
The problem is when I try to use Visual Studio 2008 as a client and I try to add a Service Reference for the WCF Data Service made with Visual Studio 2010:
an Error (Details) occurred while attempting to find services at '
and the Detail is: DS_InvalidMetadataFile Parameter name: edmxDocument
the xml of the 2 services is perfectly the same (with the exception of the url in the "base" attribute in the service node)
I have a lot confusion on data contract .I think Data contract will create according to the Service contract and Data Base Table. For Example Let say i have service contract and i have three table product,order,customer
[ServiceContract] public interface IMembersService { [OperationContract] void insertProductDetails(clsProduct objProduct); //What about the return type can we make it bool [OperationContract] List<clsProduct> getproductInfoByID(int id); [OperationContract] List<clsProduct> getproductInfo(); //======================================== [OperationContract] void insertOrderDetails(clsOrder objOrder); //What about the return type can we make it bool [OperationContract] List<clsOrder> getOrderInfoByID(int id); [OperationContract] List<clsOrder> getOrderInfo(); //======================================== [OperationContract] void insertCustomerDetails(clsOrder objOrder); //What about the return type can we make it bool [OperationContract] List<clsOrder> getCustomerInfoByID(int id); [OperationContract] List<clsOrder> getCustomerInfo(); }
For this case can i create three datacontact clsProduct,clsOrder,clsCustomer .i mean data contact depends on ther service contact and the table.
I've been given the task of consuming a client's web service, and all they've given me is a XSD file. I'm a little unsure how to go about doing this, as the only other time I've consumed a web service was internally and we just pulled it in as a web reference to our project. Where do I start when all I have the XSD (below)?
CX_ST_MATCH_ELEMENT:XSLT exception.System expected element 'IOrgeh' Description: An unhandled exception occurred during the execution of the current web request. review the stack trace for more information about the error and where it originated in the code. Exception Details:System.Web.Services.Protocols.SoapException: CX_ST_MATCH_ELEMENT:XSLT exception.System expected element 'IOrgeh'Source Error:
I need to call remote web services for example [URL]. So how to do it? I watched all asp.net video about web servies but in all videos they speaking just about local web services,
I added a Web Method to the existing web service. I don't see this method in my web project. I can see all the old methods but I couldn't access this method. Do I have to create proxy for this method?
I am creating a class library which will have business logic and i want to call this from SQL Server 2005 DTS. What i want to know is how to consume a WCF service from this class library project and compile it in a dll. How to deal with app.config created when servie is refered in class library? Could somebody send me a link to any article which can help me to implement the same in my current project?
A sample web service app I have been practicing with has two web methods: 1) HelloWorld -- which I can read the data from no problem - just a string 2) ClientData[] -- which returns an array of struct objects -- this is where I have the question.
Here is my instantiation of the webservice in my winform app for reading from HelloWorld
myWebSvc1.WebService1 s1 = new myWebSvc1.WebService1(); string y = s1.HelloWorld(); //--no problems so far here Console.WriteLine(y); //--but when I add the call to GetClientData() I have a problem List<ClientData> ls = new List<ClientData>(s1.GetClientData(3)); //--problem here
public struct ClientData { public String Name; public int ID; } [WebMethod(CacheDuration = 30, Description="Returns an array of Clients.")] public ClientData[] GetClientData(int Number) { ClientData [] Clients = null; if (Number > 0 && Number <= 10) { Clients = new ClientData[Number]; for (int i = 0; i < Number; i++) { Clients[i].Name = "Client " + i.ToString(); Clients[i].ID = i; } } return Clients; }
If I browse the .asmx file -- the sample xml returns the following if I enter 3 for GetClientData function param
From my winform app I get the following error messages when trying to add the GetClientData function call above --
Error 1 The best overloaded method match for 'System.Collections.Generic.List<DSS_2008.Form7.ClientData[]>.List(System.Collections.Generic.IEnumerable<DSS_2008.Form7.ClientData[]>)' has some invalid arguments
Error 2 Argument '1': cannot convert from 'DSS_2008.myWebSvc1.ClientData[]' to 'System.Collections.Generic.IEnumerable<DSS_2008.Form7.ClientData[]>'
Error1 The best overloaded method match for 'System.Collections.Generic.List<DSS_2008.Form7.ClientData[]>.List(int)' has some invalid arguments
Error 2 Argument '1': cannot convert from 'DSS_2008.myWebSvc1.ClientData[]' to 'int'
How can I fix this so that I can read the result into my winform app? //--sample web service
namespace MyService { using System; using System.Collections; using System.Data; using System.Web; using System.Web.Services; public struct ClientData { public String Name; public int ID; } /// <summary> /// Summary description for WebService1. /// </summary> [WebService(Namespace="http://codeproject.com/webservices/", Description="This is a demonstration WebService.")] public class WebService1 : System.Web.Services.WebService { //--source of sample: http://www.codeproject.com/KB/webservices/myservice.aspx private const int CacheHelloWorldTime = 10; // seconds public WebService1() { //CODEGEN: This call is required by the ASP+ Web Services Designer InitializeComponent(); } /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { } //WEB SERVICE EXAMPLE //The HelloWorld() example service returns the string Hello World //To build, uncomment the following lines then save and build the project //To test, right-click the Web Service's .asmx file and select View in Browser // [WebMethod(CacheDuration = CacheHelloWorldTime, Description="As simple as it gets - the ubiquitous Hello World.")] public string HelloWorld() { return "Hello World bbb"; } [WebMethod(CacheDuration = 30, Description="Returns an array of Clients.")] public ClientData[] GetClientData(int Number) { ClientData [] Clients = null; if (Number > 0 && Number <= 10) { Clients = new ClientData[Number]; for (int i = 0; i < Number; i++) { Clients[i].Name = "Client " + i.ToString(); Clients[i].ID = i; } } return Clients; } } }
I have a hardtime to consume this web service as Web Reference or Service Reference: [URL] I'm using VS2010 and when I consume it as Web Reference, I can't use its method because in the reference.cs, it has these errrors:
// CODEGEN: The operation binding 'getStationCharacteristicSummary' from namespace '[URL]was ignored. The encoding '' is not supported.
If i consume it as WCF, then each time I call the service, it complained the encoding error. May someone try to consume it and help me with this.
WCF service is running with 'wsHttpBinding' Binding. The application which gonna consume WCF Service is non-wcf compliance or in other words, it is on the top of Framework 2.0 and I can't use ServiceModel in this app (since only 3.5 supports ServiceModel).
how to consume above WCF Service in application built in 2.0?
A customer reported that our asmx web service is continually increasing in memory (mem usage as well as private bytes). We are able to reproduce the problem in our lab with Windows 2003 Server SP2 (fully patched) on some of the machines. The customer is using Windows 2008.
We created a Hello World web service targeting the 2.0 framework built under VS2005 SP1 and a test client that continues to call it. The memory increases steadily - approximately 40K per client request. If the test app is paused, the memory remains the same. When it is closed, the memory drops. Explicit calling of GC.Collect does not drop the memory.
We have run the memory profiler on the service and the leak is all native memory. We have uninstalled/re-installed the Framework on one of the machines but no difference. To our knowledge all of the security and IIS settings are not modified. We have compared app pool, default web site and virtual directory properties to machines that have no problem and they are identical.
I am trying to post data from vb.net application to web service asmx that is located on server! For posting data from vb.net application I am using this code:
Public Function Post(ByVal url As String, ByVal data As String) As String Dim vystup As String = Nothing Try 'Our postvars Dim buffer As Byte() = Encoding.ASCII.GetBytes(data) 'Initialisation, we use localhost, change if appliable Dim WebReq As HttpWebRequest = DirectCast(WebRequest.Create(url), HttpWebRequest) 'Our method is post, otherwise the buffer (postvars) would be useless WebReq.Method = "POST" 'We use form contentType, for the postvars. WebReq.ContentType = "application/x-www-form-urlencoded" 'The length of the buffer (postvars) is used as contentlength. WebReq.ContentLength = buffer.Length 'We open a stream for writing the postvars Dim PostData As Stream = WebReq.GetRequestStream() 'Now we write, and afterwards, we close. Closing is always important! PostData.Write(buffer, 0, buffer.Length) PostData.Close() 'Get the response handle, we have no true response yet! Dim WebResp As HttpWebResponse = DirectCast(WebReq.GetResponse(), HttpWebResponse) 'Let's show some information about the response Console.WriteLine(WebResp.StatusCode) Console.WriteLine(WebResp.Server) 'Now, we read the response (the string), and output it. Dim Answer As Stream = WebResp.GetResponseStream() Dim _Answer As New StreamReader(Answer) 'Congratulations, you just requested your first POST page, you 'can now start logging into most login forms, with your application 'Or other examples. vystup = _Answer.ReadToEnd() Catch ex As Exception MessageBox.Show(ex.Message) End Try Return vystup.Trim() & vbLf End Function
when client call my web service, i read owner cookie?
For example : When Guest browse www.abc.com, i write a cookie that its name BrowseTime. www.xyz.com using web service on www.abc.com . Can I get abc.com's BrowseTime cookie when xyz.com call WebService? Or alternative solution like (third part cookie or any)
I am having a strange issue in my C# Console Application:
Name Space: WcfConsoleApp Main Class: Program.cs Name Space: WcfConsoleApp.ServiceReference this namespace contains the WCF service reference
After building the project, the Program.exe avaliable in Debug folder is executing fine as expected.But when i move the exe to Client, where i need to actually run this exe, it works fine up to the line where i am referencing the Service, the line is:
WcfConsoleApp.ServiceReference.ServiceClient service = new WcfConsoleApp.ServiceReference.ServiceClient();
the consoel app crashes on the client machine at this line. (i know this because before this line, i display some mesage on the console)the same .exe and works fine at my development machine.I am sure it has to do some thing with reference path, i think the program is not getting to the path where service reference is avaliable. I have copied the full project folder as it is to the client, but still its is not working.
I have consumed an external webservice in my client application using WCF. And every thing works great in my Dev box(XP with IIS5.1)But when the same application is moved to Prod server(Win Server 2003 with IIS6.0) it fails. Below is the exception caught:
There was no endpoint listening at http://MyExternalWebServiceUrlWithSessionId could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.And the InnerException is: Unable to connect to the remote server.My Config file has the below settings:
I am consuming the java web service in .net client, when i sent a request to that web service, i am getting one exception in response object.It says "Client found response content type of 'text/plain', but expected 'text/xml'", along with this message i am getting the response in that exception.