What is the difference between WCF's WebHttpServiceHostFactory and WebServiceHostFactoryhosting?
Assuming that you're talking about the HttpServiceHostFactory from the new WCF Web API - http://wcf.codeplex.com/SourceControl/changeset/view/44d95f912edf#WCFWebApi%2fHttp%2fSrc%2fMicrosoft.ApplicationServer.Http%2fmicrosoft%2fApplicationServer%2fHttp%2fActivation%2fHttpServiceHostFactory.cs - this factory sets up the service / endpoint using the new HTTP pipeline for WCF (which is on codeplex). The WebServiceHostFactory sets up a service / endpoint using the "traditional" WCF REST style API (i.e., the one which was released with .NET Framework 3.5 and improved in 4.0).
Related
I've created a WCF Restful service(Framework 4.7.2) and hosted the service in IIS sever. I would like to add the service on a ASP.net core 3.1 Api. It does fails while adding it via connected service. The wcf service has endpoint with webhttpbinding.error
Any help would be appreciated..
Core does not support webhttpbinding, wcf only supports BasicHttpBinding, CustomBinding, NetHttpBinding, NetTcpBinding:
So there are two current solutions:
Modify the binding of the server, do not use webhttpbinding.
The client continues to use the .net framework.
Feel free to let me know if the problem persists.
I am developing a WCF service (VS2010, .NET 4.0). If in the WCF service I utilise REST type functionality (i.e. decorate my methods with WebGet, etc), since REST heavily leverages the HTTP protocol, am I locked into hosting the WCF service as HTTP - i.e. do I have the option to host as net.tcp ?
Short answer - Yes, unless you want to write your own HTTP stack analog.
Is there any particular need in Tcp?
Probably missing something very basic. I created a WCF 4.0 Rest Service. It works no problems when I'm hitting the url from a browser and I'm getting back what I want.
But now I want to use that service from a client mvc application (it will also be used by other non .net platforms which is why it's a rest service in the first place).
Problem is how do I get a service reference to it so I can start to use it in my c# code? With the new minimal WCF .net 4 config approach and no interface for the service contract, I don't know how to specify a mex endpoint. Ultimately I don't want a mex endpoint in production, just during development. I would love to be able to specify that all my services (around 10 in one application) have endpoints with one tiny piece of config that vs2010 .config transformations just rips out when I publish.
Stop. REST service doesn't use metadata. Metadata (Mex endpoint) are only for SOAP services because WSDL 1.1 (the only version supported by WCF) is able to describe only SOAP service. WADL or WSDL 2.0 is able to describe REST service but non of them is currently supported by WCF.
REST service is consumed by using WebRequest directly or by building ChannelFactory on top of shared contracts. Both methods are described here. Other method is to use HttpClient from REST Starter kit (former API). The problem with Starter kit is that it has never reached RTM (it was replaced by WCF 4). Instead of metadata endpoint WCF 4 REST service offers help page where all operation are described. When using WCF 4 REST template the help page should be already turned on - just add /help sufix to address of your service. Here is another article about building REST clients.
I'm developing a .NET 2.0 client application that needs to connect to a WCF service. I add a web reference to a basicHttpBinding WCF service that we've developed and VS creates the proxy class and the config paraphenalia which is fine. The problem is that I only want to use a small fraction of the methods that the WCF service implements and not carry around the extra implementations that the client app doesn't need.
I was thinking of creating a different basicHttpBinding endpoint and put the methods there. Is there a way for only one endpoint of a WCF service to be referenced by a .NET 2.0 project?
Regards,
Frank
When you add a web reference to a service, you always get all the service methods. It's the service (implementation) that defines the scope of what ends up in the WSDL.
The only option to limit the scope of the method your client generates would be to create a second WCF service on the backend, which only implements those few methods that you want in your client - just having a second endpoint won't really help.
I am going to have to interoperate with some WCF classes from an ASP.NET 2.0 web application. What tools exist that I can use to generate a proxy class that is compatible with classic XML Web Services? AFAIK, the WCF endpoints are using the basic HTTPS binding.
Thanks,
Matthew
WCF was introduced in .net 3.0, so you cannot use WCF from .net 2.0.
However a WCF service with basichttpbinding will work in the same way as a classic xml web service.