Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > ASP .Net Web Services > Routing with WSE 2.0

Reply
Thread Tools

Routing with WSE 2.0

 
 
Pete Wright
Guest
Posts: n/a
 
      02-03-2005
Hi All,

I'm trying to develop a custom SoapHttpHandler, but it just doesn't want to
work. Here's my handler

public class BrokerRoutingHandler :
Microsoft.Web.Services2.Messaging.SoapHttpRouter
{
protected override Uri ProcessRequestMessage( SoapEnvelope message)
{
System.Diagnostics.EventLog EventLog1 = new
System.Diagnostics.EventLog();

if (!System.Diagnostics.EventLog.SourceExists("Broker "))
System.Diagnostics.EventLog.CreateEventSource(
"Broker", "Application");

EventLog1.Source = "Broker";
EventLog1.WriteEntry ("Intercepted a message and passed it on.");


// Code goes here to intercept the message and have a tweak.
return base.ProcessRequestMessage (message);
}

}
Simple enough - the idea is that when this intercepts a message it will post
to the event log just so I know it's doing something.

I updated the web.config as the WSE documenation says to do for content
based routing, to include this

<system.web>
:
:
<httpHandlers>
<add type="BrokerService.BrokerRoutingHandler, BrokerService" path="*.asmx"
verb="*" />
</httpHandlers>
</system.web>

So, any request for any web service hits my customer handler.

To build the application I created a standard web service project, with a
web service in it, then added in WSE2.0 support, and then added in the class
above.

The problem is, when I hit F5 to run the app just to make sure everything's
ok, I get this

"WSE003: The input was not a valid SOAP message"

I have tried pretty much all I can think of to solve this. Any ideas?
(All replies to the group please -I've searched Google relentlessly for a
solution or anyone that's come across WSE003 as an error code and found
nothing, so we should probably keep this public.)


Cheers,


--
Pete Wright
Author of ADO.NET Novice to Pro for Apress
www.petewright.org


 
Reply With Quote
 
 
 
 
Dilip Krishnan
Guest
Posts: n/a
 
      02-03-2005
Hello Pete,
Cannot hit F5 and run a web service. You would need to create a web service
client and send a soap message to it. What seems to be happening here is,
when you hit F5 the IDE makes a web request to xyz.asmx and that request
goes through your router aswell (no surprises there)! If you are just wanting
to log any request using your router, Id suggest you could just create a
SoapExtension [0] that traces your request.

[0] - http://msdn.microsoft.com/library/de...classtopic.asp
HTH
Regards,
Dilip Krishnan
MCAD, MCSD.net
dkrishnan at geniant dot com
http://www.geniant.com

> Hi All,
>
> I'm trying to develop a custom SoapHttpHandler, but it just doesn't
> want to work. Here's my handler
>
> public class BrokerRoutingHandler :
> Microsoft.Web.Services2.Messaging.SoapHttpRouter
> {
> protected override Uri ProcessRequestMessage( SoapEnvelope message)
> {
> System.Diagnostics.EventLog EventLog1 = new
> System.Diagnostics.EventLog();
> if (!System.Diagnostics.EventLog.SourceExists("Broker "))
> System.Diagnostics.EventLog.CreateEventSource(
> "Broker", "Application");
> EventLog1.Source = "Broker";
> EventLog1.WriteEntry ("Intercepted a message and passed it on.");
> // Code goes here to intercept the message and have a tweak.
> return base.ProcessRequestMessage (message);
> }
> }
> Simple enough - the idea is that when this intercepts a message it
> will post
> to the event log just so I know it's doing something.
> I updated the web.config as the WSE documenation says to do for
> content based routing, to include this
>
> <system.web>
> :
> :
> <httpHandlers>
> <add type="BrokerService.BrokerRoutingHandler, BrokerService"
> path="*.asmx"
> verb="*" />
> </httpHandlers>
> </system.web>
> So, any request for any web service hits my customer handler.
>
> To build the application I created a standard web service project,
> with a web service in it, then added in WSE2.0 support, and then added
> in the class above.
>
> The problem is, when I hit F5 to run the app just to make sure
> everything's ok, I get this
>
> "WSE003: The input was not a valid SOAP message"
>
> I have tried pretty much all I can think of to solve this. Any ideas?
> (All replies to the group please -I've searched Google relentlessly
> for a
> solution or anyone that's come across WSE003 as an error code and
> found
> nothing, so we should probably keep this public.)
> Cheers,
>



 
Reply With Quote
 
 
 
 
Pete Wright
Guest
Posts: n/a
 
      02-03-2005
Thanks Dilip.

eventually this handler will grow into a dynamic router based on content in
the message passed in; for now though I'd just be happy to see the handler
running.

You are right though - I changed the proxy that I had calling the service to
use
Microsoft.Web.Services2.WebServicesClientProtocol

sinstead of the standard base class. Now I get an error of Destination
unreachable.

Does it matter that the handler and web service are on the same machine? Any
ideas?

Pete


"Dilip Krishnan" <> wrote in message
news: ...
> Hello Pete,
> Cannot hit F5 and run a web service. You would need to create a web
> service client and send a soap message to it. What seems to be happening
> here is, when you hit F5 the IDE makes a web request to xyz.asmx and that
> request goes through your router aswell (no surprises there)! If you are
> just wanting to log any request using your router, Id suggest you could
> just create a SoapExtension [0] that traces your request.
>
> [0] -
> http://msdn.microsoft.com/library/de...classtopic.asp
> HTH
> Regards,
> Dilip Krishnan
> MCAD, MCSD.net
> dkrishnan at geniant dot com
> http://www.geniant.com
>
>> Hi All,
>>
>> I'm trying to develop a custom SoapHttpHandler, but it just doesn't
>> want to work. Here's my handler
>>
>> public class BrokerRoutingHandler :
>> Microsoft.Web.Services2.Messaging.SoapHttpRouter
>> {
>> protected override Uri ProcessRequestMessage( SoapEnvelope message)
>> {
>> System.Diagnostics.EventLog EventLog1 = new
>> System.Diagnostics.EventLog();
>> if (!System.Diagnostics.EventLog.SourceExists("Broker "))
>> System.Diagnostics.EventLog.CreateEventSource(
>> "Broker", "Application");
>> EventLog1.Source = "Broker";
>> EventLog1.WriteEntry ("Intercepted a message and passed it on.");
>> // Code goes here to intercept the message and have a tweak.
>> return base.ProcessRequestMessage (message);
>> }
>> }
>> Simple enough - the idea is that when this intercepts a message it
>> will post
>> to the event log just so I know it's doing something.
>> I updated the web.config as the WSE documenation says to do for
>> content based routing, to include this
>>
>> <system.web>
>> :
>> :
>> <httpHandlers>
>> <add type="BrokerService.BrokerRoutingHandler, BrokerService"
>> path="*.asmx"
>> verb="*" />
>> </httpHandlers>
>> </system.web>
>> So, any request for any web service hits my customer handler.
>>
>> To build the application I created a standard web service project,
>> with a web service in it, then added in WSE2.0 support, and then added
>> in the class above.
>>
>> The problem is, when I hit F5 to run the app just to make sure
>> everything's ok, I get this
>>
>> "WSE003: The input was not a valid SOAP message"
>>
>> I have tried pretty much all I can think of to solve this. Any ideas?
>> (All replies to the group please -I've searched Google relentlessly
>> for a
>> solution or anyone that's come across WSE003 as an error code and
>> found
>> nothing, so we should probably keep this public.)
>> Cheers,
>>

>
>



 
Reply With Quote
 
Pete Wright
Guest
Posts: n/a
 
      02-03-2005
Solved the problem.

By having the handler registered as "*.asmx* what was happening was that the
router was initially triggering and then directing out to something.asmx.
This would then pop back into the router and get thrown out since each time
the router gets hit the next Via is set to the current To:, so the second
time around To is cleared out and there are no more vias - if that makes
sense, so the result is desintation unreachable.

The solution is to have the handler pick up specific names (since this is a
broker we are going for request.asmx and publish.asmx) and then route out to
the appropriate service, OR always route out to asmx files in a different
virtual directory. The latter is better because then you really can keep the
router on one machine and services on another.


"Pete Wright" <> wrote in message
news:...
> Thanks Dilip.
>
> eventually this handler will grow into a dynamic router based on content
> in
> the message passed in; for now though I'd just be happy to see the handler
> running.
>
> You are right though - I changed the proxy that I had calling the service
> to
> use
> Microsoft.Web.Services2.WebServicesClientProtocol
>
> sinstead of the standard base class. Now I get an error of Destination
> unreachable.
>
> Does it matter that the handler and web service are on the same machine?
> Any
> ideas?
>
> Pete
>
>
> "Dilip Krishnan" <> wrote in message
> news: ...
>> Hello Pete,
>> Cannot hit F5 and run a web service. You would need to create a web
>> service client and send a soap message to it. What seems to be happening
>> here is, when you hit F5 the IDE makes a web request to xyz.asmx and that
>> request goes through your router aswell (no surprises there)! If you are
>> just wanting to log any request using your router, Id suggest you could
>> just create a SoapExtension [0] that traces your request.
>>
>> [0] -
>> http://msdn.microsoft.com/library/de...classtopic.asp
>> HTH
>> Regards,
>> Dilip Krishnan
>> MCAD, MCSD.net
>> dkrishnan at geniant dot com
>> http://www.geniant.com
>>
>>> Hi All,
>>>
>>> I'm trying to develop a custom SoapHttpHandler, but it just doesn't
>>> want to work. Here's my handler
>>>
>>> public class BrokerRoutingHandler :
>>> Microsoft.Web.Services2.Messaging.SoapHttpRouter
>>> {
>>> protected override Uri ProcessRequestMessage( SoapEnvelope message)
>>> {
>>> System.Diagnostics.EventLog EventLog1 = new
>>> System.Diagnostics.EventLog();
>>> if (!System.Diagnostics.EventLog.SourceExists("Broker "))
>>> System.Diagnostics.EventLog.CreateEventSource(
>>> "Broker", "Application");
>>> EventLog1.Source = "Broker";
>>> EventLog1.WriteEntry ("Intercepted a message and passed it on.");
>>> // Code goes here to intercept the message and have a tweak.
>>> return base.ProcessRequestMessage (message);
>>> }
>>> }
>>> Simple enough - the idea is that when this intercepts a message it
>>> will post
>>> to the event log just so I know it's doing something.
>>> I updated the web.config as the WSE documenation says to do for
>>> content based routing, to include this
>>>
>>> <system.web>
>>> :
>>> :
>>> <httpHandlers>
>>> <add type="BrokerService.BrokerRoutingHandler, BrokerService"
>>> path="*.asmx"
>>> verb="*" />
>>> </httpHandlers>
>>> </system.web>
>>> So, any request for any web service hits my customer handler.
>>>
>>> To build the application I created a standard web service project,
>>> with a web service in it, then added in WSE2.0 support, and then added
>>> in the class above.
>>>
>>> The problem is, when I hit F5 to run the app just to make sure
>>> everything's ok, I get this
>>>
>>> "WSE003: The input was not a valid SOAP message"
>>>
>>> I have tried pretty much all I can think of to solve this. Any ideas?
>>> (All replies to the group please -I've searched Google relentlessly
>>> for a
>>> solution or anyone that's come across WSE003 as an error code and
>>> found
>>> nothing, so we should probably keep this public.)
>>> Cheers,
>>>

>>
>>

>
>



 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
intervlan routing and policy routing C3750 or C 4948 Sied@r Cisco 3 10-20-2005 08:42 PM
integrating new 3550 with routing into existing routing structure? joeblow Cisco 3 03-14-2005 08:50 AM
exchange routes between global IP routing table and VRF routing table zher Cisco 2 11-04-2004 11:28 PM
Interceptor, HttpModule, WSE oliver.wulff@zurich.ch ASP .Net 0 01-27-2004 05:57 AM
WSE coverage Chris Pettingill MCSD 9 11-02-2003 08:53 PM



Advertisments
 



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57