Hi,
I am implementing a couple of webservices (all in the same web project)
that will access several backoffice systems to get and update different
types of information. All the methods in the several webservices return
a DataSet with the information requested.
All the methods of the Webservices also go through an initial phase of
checking either the Backoffice systems are online or not. If not, they
all return the SAME error DataSet.
To save lines of code (and the redundance of having the same code
repeated all over, with all the possible errors that can arise from
that), I am trying to do that check in the Application_BeginRequest
event, but without success...
So, my question is: Is it possible to use the Application_BeginRequest
event to catch the calls to all the methods of all the webservices, and
return a standard answer to the clients in case of error and not
continue the normal flow of the method called? If so, how can I achieve
that? If not, is there any other way?
I am at a loss...
Thank you in advance,
Ana Santana
Sami Vaaraniemi - 27 May 2005 09:23 GMT
Returning a special DataSet indicating an error will be prone to problems. A
consumer will some day fail to recognize it as an error and will try to do
something with it, and straightening things out after the fact will be
difficult.
In my opinion a better option would be to have a SoapExtension that checks
that the backoffice systems are OK, and if not, throw an exception. The best
place to do this would be in the ProcessMessage override, in
SoapMessageStage.BeforeDeserialize. If you decide that the backoffice
systems are not OK, throw an SoapException and the normal processing of the
request will be short-circuited at that point.
Regards,
Sami
> Hi,
>
[quoted text clipped - 24 lines]
>
> *** Sent via Developersdex http://www.developersdex.com ***