Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Add Service Reference doesn't generate proxy

I understand there are other similar questions, but I haven't been able to find a working response.

I create the default WCF service from the template [which comes with GetData() and GetDataUsingDataContract()].
It runs fine in the browser.

I have a separate web site to which I add this new WCF service:

I do 'Add Service Reference', enter my URL, the service comes up and I click 'OK' to add it.
Under 'App_WebReferences', I see the namespace of my added service: 'ServiceReference1', with 'References.svcmap' under it, and a couple .svcinfo/.wsdl/.xsd files under that.

No proxy files are created, but <system.serviceModel> element is added to my web.config, with what seems to be proper information.

However, with no proxy, I can't access/call any methods in my service (ie ServiceReference1.WCFMethod1())

I can call svcutil, generate the proxy, add it to my App_Code, and everything works as it should.
My question is, why isn't my proxy being created with 'Add Service Reference'?
Everything is under target framework: .NET Framework 4.

EDIT:

Just created a Console App and added the service reference and it created the proxy. So the issue is my web site is not creating the proxy...

like image 311
eych Avatar asked Dec 07 '11 20:12

eych


2 Answers

I had this same problem and found that unchecking Reuse types in all referenced assemblies did solve the problem. However, in my case, I needed it to reuse types from some of my referenced libraries. I found this post, covering a very similar problem. In that post, it references a Microsoft knowledge-base article which describes a fix for the the following issue:

Consider the following scenario:

  • You create an ASP.NET MVC4 Web API project in Visual Studio 2012.
  • You add a WCF service reference in the project.

In this scenario, the Reference.cs file for the service reference is empty.

Cause

This issue occurs because the DataContractSerializer class has encountered a type (Newtonsoft.Json.Linq.JToken) that it does not support. In this case, it throws an exception, and then stops generating the service reference.

I wasn't referencing that JSON library, but, based on that bug description, I surmised that one of my referenced libraries must have had a similar problem. I figured that one of the libraries that I was referencing probably contained a type that was not supported by the DataContractSerializer, it was throwing the same kind of exception, and it was therefore failing in the same way.

Sure enough, I found out that, in my case, the culprit was one of my own libraries which happened to include a public proxy for the same WCF service. I suspect it was that public proxy that was causing the trouble. In any case, by selecting Reuse types in specified referenced assemblies, and then selecting all of the assemblies except that one, the service reference automatically generated the proxy classes correctly.

like image 184
Steven Doggart Avatar answered Sep 25 '22 18:09

Steven Doggart


When you are adding a ServiceReference : References -> Add new service reference. Clik on advanced button and uncheck "Reuse types in all referenced assemblies". This option sometimes causing errors.

like image 41
polacekpavel Avatar answered Sep 22 '22 18:09

polacekpavel