WCF Service Reference In .net Page - When To Dispose?
Aug 31, 2010
I have an ASP.net page that is creating a service reference to a WCF service and making calls in multiple places in my page. I instantiate the service reference in Page_Load and have an instance variable to store it:
I just discovered that I need to be disposing of the service reference when I am done using it or else the connections will be kept alive and will block incoming connections if I reach the max number of connections. Where would the best place to dispose of these references be? I was thinking of doing it on the OnUnLoad event.
When you create and use a Web Service proxy class in the ASP.Net framework, the class ultimately inherits from Component, which implements IDisposable. I have never seen one example online where people dispose of a web proxy class, but was wondering if it really needs to be done. When I call only one method, I normally wrap it in a using statement, but if I have a need to call it several times throughout the page, I might end up using the same instance, and just wondered what the ramifications are of not disposing it.
I have built a WCF Service that is being consumed by a Silverlight app. At first I created one method that was very simple:
public String SfTest() { return "SF Test"; }
No poblem. My silverlight app references my service and displays "SF Test" in a textbox. Now I add a method to my wcf service like this:
public List<String> GetTest() { List<String> list = new List<string>(); String a = "a"; list.Add(a); String b = "b"; list.Add(b); return list; }
I update the reference to the service in my Silverlight app and the using statement in my xaml cs page throws an error like the service doesn't even exist although it is there. I am assuming the problem has to do with datatypes or serialization or something like that but it is driving me up the wall. Why can't I consume a simple generic list in my Silverlight app through the WCF service.
I'm currently trying to work out the best way to build this web application, which will then be intergrated on other systems, such as WinForms, Intranets etc.
We hope to include the usual layers i.e. DAL, BLL, BOL and UI but I have been experimenting with Entity Framework 4 and WCF Data Services and managed to get something in place where I was using WCF as a gateway to EF4.
i.e. Adding a Service Reference to my project and then using the EF4 context and writing LINQ queries against the DB
e.g.[Code]....
Now with the current setup I would still need to write a DAL Class Library, that interacts with the Data Service, because as I said WCF Data Services only seems to be a gateway, I can't see where to put the code (above) in the Data Service and then how I could these methods.
My questions are: 1. How do I develop a WCF Data Service in such a way to allow this behaviour - I know how I could do it using ASMX web service, something like [Code]....
2. If I am to use WCF Data Services, how is serialization handled (if at all) - again I know how to do something in ASMX web services
3. Again, If I am to use WCF, how do I add Security and only allow my applications to access the web service - for obvious reasons
4. Would it be possible / logical to also include the Business Logic Layer into the web service?
How to create an instance of web service without adding web service reference? How to identify the server address/name where the web service is hosted from C# code?
<Application architecture>I'm developing ASP.NET Web Application by Visual Studio 2008.(.Net Framework Version = 2.0)I put followin two projetcs in the solution.a. Class library which implements all the buisiness logic for application. (I'll call it "ClassLib" in the followin sentence)b. ASP.NET Web applicatoin which presents UI.(I'll call it "WebApp")ClassLib uses Web Service which located on other server. So, I set web reference in it. Method for url settings for this web reference is "Dynamic".
Using VS2008, I noticed that in Class Project I only have a choice of adding "service reference" where as in Web Application project, I have two choices "web reference" and "service reference".
I have used web reference. How is "service reference" different from web ref? and what's the major purpose of service ref?
I am getting an error when i try to add a service reference of a WCF service. Error details is below. My web service is hosted on a different server and my client is on different server. When i run the service directly from IE i can see the service but adding it in .net web application i get error.
I'm creating a DLL with a reference to web services (I don't have the choice to do so) but I have to add web service references to the project that uses the DLL for it to work. Example, I have the DLL called API.DLL that calls a web service called WebService.svc that I want to use in a project called WinForm. First, I have to add a "Service Reference" to WebService.svc in API.DLL. Then, I add a reference API.DLL to WinForm but it doesn't work unless I also add a service reference to WebService.svc in WinForm.
but when I tried to add the service reference to the silverlight app, the Add Service Reference window would show me that there was a service file, but the node wouldn't expand to show the rest of the files that contain the services and what not. I got this error instead:
"An error occurred during the processing of a configuration file required to service this request. review the specific error details below and modify your configuration file appropriately."
"Parser Error Message:There is no service behavior named 'AdventureWorks_WebServer.Service1Behavior'."
"Metadata contains a reference that cannot be resolved: 'http://localhost:55579/Service1.svc'.
The server did not provide a meaningful reply; this might be caused by a contract mismatch, a premature session shutdown or an internal server error.
If the service is defined in the current solution, try building the solution and adding the service reference again."
I have my own web service application with more then one .asmx file. Now i am not getting how can i reference web service with my web application as "Add Web Reference".
I want to connect with both asmx files at once. Means once i connect web service as add web reference and i can call both .asmx file from my code behind page.
http://geoss.compusult.net/wes/serviceManagerCSW/csw?request=GetCapabilities&service=CSWHow would i create the proxy classes for the service?More information HERE.The hosting service above is implementing an OGC standard (CSW). The schemas for this standard are hosted HERE. And they have some WSDLs HERE. If i was to place the URL to one of those WSDL into visual studio's "add reference/service" i get a list of web operations and will generate a reference. However, that will not work because it does not know about the true hosting provider. So i'm not quite sure what to do.
Edit #2: Custom tool error: Failed to generate code for the service reference 'ServiceReference1'. Please check other error and warning messages for details. D: empWebApplication2WebApplication2Service ReferencesServiceReference1Reference.svcmap 1 1 WebApplication2 [code]...
We inherited some code that makes use of a web service on an external server from a third party. Currently all the references are done in the project directly and thus compiled to that location and such. This issue we have is that there is a test and production server for the web service with different URLs.
Is there a simple means to make the web reference more dynamic so that it can be defined in a web.config and not require changing the actual source and recompiling to switch between servers?
I have a UI that communicates with a service. I made some changes to the service- added some code and a property in the Interface associated with the service. After I made the changes, I updated the service reference in my UI and I couldn't access my newly added property. I also tried deleting the reference and adding in back again, it still doesn't work. I get the following error:
xxxxxxx(filename) does not contain a definition for xxxx(propertyname) and no extension method accepting a first arguement of type xxxxx could be found(are you missing a using directive or an assembly reference?)
When I look in the Reference.cs file, I don't see the newly added property in it.
I have a number of .Net web sites built in VS2010 using Framework 4.0that reference a web service to send emails.
My most recent site I created as a web application as opposed to a web site. In the Solution Explorer you can add a 'Service Reference' and, if you click the Advanced button you can then add a reference to a web service.
I did that and now the (web application) site won't build - it says it cannot load the Ajax dll. If I remove the reference to the web service, the site builds okay - if I add the reference back in, the site will not build.
Do I need to abandon the idea of using a 'Web Application' and turn it into a 'Web Site'?
I'm helping out a colleague on this one so if I'm missing some details that's why.We have an asp.net 3.5 web application calling a WCF service. Originally the app used a "Web Reference" to register the service however after having some trouble and burning an incident with Microsoft their solution was to replace the "Web Reference" with a "Service Reference" to the WCF service.This is great except the problem is that when we create a Service Reference, the method signatures are different than they were when a Web Reference was used.From what I've read this may be expected, however in our case this would mean some significant changes to the application and of course it was due yesterday...so......I'm wondering two things:Is it normal/expected that method signatures will change based on the reference type?Is there a way to create the Service Reference that will generate method signatures identical to the original Web Reference?
I have web project and class projects. one of the Class project has web reference. and i am consuming it in web project.Question: can I change class projects web reference url depending on environment DEV, Release, Test?Question: While in runtime why does not web reference's url take value from app.config?(it is taking value from Settings.settings.)
I have a Silverlight control that is hosted within an ASP.NET application. The Silverlight control has a web service reference. The URL of this service is going to vary when we install the application for our customers. I need a way to be able to change this web service reference URL from within the web.config of the ASP.NET application. How can I do this?
I have two projects in my solution: MyApp.Domain and MyApp.WebService. MyApp.WebService is a WCF service library. I want to use some utility functions from MyApp.Domain. So in MyApp.WebService, I added a reference to MyApp.Domain. Intellisense picked it up just fine, it recognized the function I need to call. But when I build the solution, I get this error:
The type or namespace name 'Domain' does not exist in the namespace 'MyApp' (are you missing an assembly reference?) at using MyApp.Domain.Utility;
Thing is, when my service is providing result of type string my client .aspx page is working fine and it gives reference in my code. But now I changed my service to provide custom data type and I can't see service reference in my code, intellisense doesn't offer it at all. What am I missing here? WCFTestClient.exe is giving good results but I can't create my own in VS 2008
I have created WCF Application in vs2010 and using it in window application . i have added WCF service reference using "Add Web service Reference" from visual stuio. i want to do it by programming.