Archive

Archive for the ‘WCF’ Category

WCF samples

November 25, 2008 Leave a comment
WCF…hmmm… what is this all about…
I was quite happy to get the possibility in one of my project to be able to implement WCF as part of my specification. Not because it exists and I have to use it, but more because I know it exist and I need to use it. My application view was really dedicated to that as services providers.
So I start to dig out how it was working, and as everyone does starting by the famous calculator service sample.
By starting implementing WCF for my own purpose a lot of question raised and it was hard today to get real examples. You can get some ideas, the surface, but why it is like this, why this is named like this and not like that…
 
To study more I go through a book “Programming WCF Services” by Juwal Lowy, which is really exploring the foundation of WCF but with expert eyes.
I was quite frustrated at the begining to not find in this book a kind of step by step samples I was use to get with some others, simply to learn..
Fortunatly I get some experience in the past with .NET remoting concept and I find some points which was familar to me.
 
In order to help, Juval Lowy has place some advance technics samples based on his book and other stuff that you can find at :
 
Thanks Juval for your great samples 
Categories: WCF

Hosting and Consuming WCF service

November 25, 2008 Leave a comment
For those who has no , rough or fuzzy ideas of different hosting mecanism for there WCF service, I jump to a good article on different approach.
This article discusses Windows Communication Foundation (WCF) hosting options and consuming WCF services.
The traditional ASMX Web services were hosted only on Microsoft Internet Information Services (IIS).
The hosting options for WCF services are significantly enhanced in Microsoft .NET Framework 3.0.
Categories: WCF

System.ServiceModel.FaultException`1 was unhandled by user code

November 25, 2008 55 comments
Managing a correct error handling process in an application is a nightmare if you want to do it properly and I would say that it is not always the best exciting part, but it is absolutly needed to prevent as much as possible unhandle situation. In a normal application you simply place the code inside try-catch block with the exception type, and there are handle as normal .net exception object that you can bubble up.
With WCF service I have discover around different reading that it is a bit different, simply because WCF need to guaranty interoperability with any client application in order that they are able to catch error returned.
For that WCF need to convert the “normal .NEt exception” into a SOAP message exception that will be understandable from client application.
To achive this you need to specify a FaultContract attrribute in your service either declaratively or imperatively way. For my case I have done it with declarative.
You specify the declarative FaultContrat as follow for your service method:
  [OperationContract] [FaultContract (typeof(MyError))] Boolean myMethod();
MyError is here a custom type which define an error message
After having configured the service FaultContractAttribute, next you need to raise the exception from your server side service method code as follow :
Server side
catch (Exception exc) {   MyError ErrLog = new Maillefer.Nomos.Types.Common.MyError (“This is an error”,”Critical”);   FaultException<MyError> fe = new FaultException<MyError >(ErrLog, new FaultReason(ErrLog.Message));   throw fe; }

So far so good. Then from the client application side you simply need to catch the FaultException error type as you normally do and retrive the message return by the Servcie SOAP message as follow:

Client side

catch (FaultException MyError) {   string msg = Error.Detail.Message;    MessageBox.Show (msg);   wcfclient.Close(); }

And that’s it. You then receive the error message send from your server, inside your client application.. Hmmm this is what I was expecting but it was not behaving as expected. I spend days to cross check my code and verify impementation to get the exception correctly thrown but when runnig my application my service was stoping at the time it was throwing the exception (throw fe). The error return from that execution was something strange like :

System.ServiceModel.FaultException`1 was unhandled by user code

After a lot of research I find out the solution on a post mentionning that it was due to some setting of debugging scenario of my VS environement, which make my code execution stop at each exception with not really logic message wich was giving a lot of confusion.

To remove this behaviour it was advise to uncheck the 2 following options from the Tools->Option menu of IDE:

 0654_Capture

 Hoping this post will save you a lot of research time. Once again, every thing works until you hit the point that gives you nightmare 🙂

Categories: WCF Tags: