Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

WCF Configuration without a config file

Does anyone know of a good example of how to expose a WCF service programatically without the use of a configuration file? I know the service object model is much richer now with WCF, so I know it's possible. I just have not seen an example of how to do so. Conversely, I would like to see how consuming without a configuration file is done as well.

Before anyone asks, I have a very specific need to do this without configuration files. I would normally not recommend such a practice, but as I said, there is a very specific need in this case.

like image 819
Kilhoffer Avatar asked Sep 10 '08 16:09

Kilhoffer


2 Answers

Consuming a web service without a config file is very simple, as I've discovered. You simply need to create a binding object and address object and pass them either to the constructor of the client proxy or to a generic ChannelFactory instance. You can look at the default app.config to see what settings to use, then create a static helper method somewhere that instantiates your proxy:

internal static MyServiceSoapClient CreateWebServiceInstance() {     BasicHttpBinding binding = new BasicHttpBinding();     // I think most (or all) of these are defaults--I just copied them from app.config:     binding.SendTimeout = TimeSpan.FromMinutes( 1 );     binding.OpenTimeout = TimeSpan.FromMinutes( 1 );     binding.CloseTimeout = TimeSpan.FromMinutes( 1 );     binding.ReceiveTimeout = TimeSpan.FromMinutes( 10 );     binding.AllowCookies = false;     binding.BypassProxyOnLocal = false;     binding.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;     binding.MessageEncoding = WSMessageEncoding.Text;     binding.TextEncoding = System.Text.Encoding.UTF8;     binding.TransferMode = TransferMode.Buffered;     binding.UseDefaultWebProxy = true;     return new MyServiceSoapClient( binding, new EndpointAddress( "http://www.mysite.com/MyService.asmx" ) ); } 
like image 115
devios1 Avatar answered Sep 18 '22 12:09

devios1


If you are interested in eliminating the usage of the System.ServiceModel section in the web.config for IIS hosting, I have posted an example of how to do that here (http://bejabbers2.blogspot.com/2010/02/wcf-zero-config-in-net-35-part-ii.html). I show how to customize a ServiceHost to create both metadata and wshttpbinding endpoints. I do it in a general purpose way that doesn't require additional coding. For those who aren't immediately upgrading to .NET 4.0 this can be pretty convenient.

like image 29
John Wigger Avatar answered Sep 20 '22 12:09

John Wigger