URL Rewriting/Redirecting for WebService(s) using HttpHandler renders blank page

Sep 3 2009 3:21 AM


Hi,


I am trying out with a simple URL redirection technique; if I am successful in this approach I will go ahead in implementing friendly RESTful urls for my application.

 

Problem I am facing in URL redirection using Http Handler:

 

I have created a VisualStudio2008 webservcie application.

Added 2 services, Service1.asmx and Service2.asmx.

 

Scenario 1:

Added an Http Handler (GenericHandler) class in the same hierarchy.  

Added the below code in ProcessRequest method,

 

if (context.Request.PhysicalPath.IndexOf("Service1.asmx") > -1)

                    context.RewritePath("~/Service2.asmx");

 

Registerd the Handler in the httpHandler section of the webconfig, the bold one

 

<remove verb="*" path="*.asmx"/>

                                                <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

                                                <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

                                                <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>

      <add verb="*" type="RESTWS.RESTHandler,RESTWS" path="*.asmx"/>

 

Now, I run my application by making Service1.asmx as the start page, the process hits my handler code, executes it with out any expection, but atlast I see a blank screen in the browser.

 

For crossing my code I also did the following,

Scenario 2:

Added a Global.asax file in the in the same hierarchy.

Added same code in Application_BeginRequest

 

if (Context.Request.PhysicalPath.IndexOf("Service1.asmx") > -1)

                Context.RewritePath("~/Service2.asmx");

 

Commented out the Handler registry part what I added in the webconfig.

Again ran the application, the redirection from Service1.asmx to Service2.asmx happened successfully as expected.

 

Scenario 3:

When I have both the Global.asax and the httphandler enabled, again I get a blank page.

 

Scenario 4:

I felt that httpHandler doesnot suppport url redirection in the case of asmx(webservices), so I tried the same above procedures and scenarios with VisualStudio2008 Web application with 2 aspx pages (Default1.aspx and Default2.aspx) instead of Web service application. But the results were same as the above scenarios.

 

My Questions:

 

What is the mistake I am doing in my above scenarios?

How to perform urlredirection for web services using Http Handlers?


Thanks in Advance.


Answers (1)