L
lundk01
Is it possible to use an HTTP Module to change the source code of a
page?
In the source code for a particular ASPX file there are many
references to the same .Css file which I have been asked to remove
from the body and place once in the header of the file in order to
improve the performance.
Here is an example of the code for what I'd like to do:
Imports System.Web
Public Class MyModule
Implements IHttpModule
Public Sub Dispose() Implements System.Web.IHttpModule.Dispose
End Sub
Public Sub Init(ByVal application As HttpApplication) Implements
IHttpModule.Init
AddHandler application.EndRequest, AddressOf
Me.Application_EndRequest
End Sub
Private Sub Application_EndRequest(ByVal source As Object, ByVal e
As EventArgs)
Dim application As HttpApplication = DirectCast(source,
HttpApplication)
Dim context As HttpContext = application.Context
Dim OriginalResponse As String = application.?????? 'Need to
extract HTML code behind page somehow!!!
If OriginalResponse.Contains("<TITLE>TitleOfPageToBeModified</
TITLE>") Then
OriginalResponse.Replace("StringToRemoveFromBody", "")
'''Add "StringToPlaceInHeader" into <head> somehow!!!
context.Response.Write(OriginalResponse.ToString)
End If
End Sub
End Class
Can this be done this way? I would have thought that during the
EndRequest event I would have had access to the HTML, but I am unable
to get it. If I re-execute the page myself, I can get it using:
Dim str As System.IO.StringWriter = New System.IO.StringWriter
application.Server.Execute(application.Request.Path, str)
but I can't see how this will help. The application which produces
these cannot currently be modified so we are looking for a temporary
fix. I know there are other solutions (IISPROXY) but I have been asked
to look just at HttpModules.
Any ideas?
page?
In the source code for a particular ASPX file there are many
references to the same .Css file which I have been asked to remove
from the body and place once in the header of the file in order to
improve the performance.
Here is an example of the code for what I'd like to do:
Imports System.Web
Public Class MyModule
Implements IHttpModule
Public Sub Dispose() Implements System.Web.IHttpModule.Dispose
End Sub
Public Sub Init(ByVal application As HttpApplication) Implements
IHttpModule.Init
AddHandler application.EndRequest, AddressOf
Me.Application_EndRequest
End Sub
Private Sub Application_EndRequest(ByVal source As Object, ByVal e
As EventArgs)
Dim application As HttpApplication = DirectCast(source,
HttpApplication)
Dim context As HttpContext = application.Context
Dim OriginalResponse As String = application.?????? 'Need to
extract HTML code behind page somehow!!!
If OriginalResponse.Contains("<TITLE>TitleOfPageToBeModified</
TITLE>") Then
OriginalResponse.Replace("StringToRemoveFromBody", "")
'''Add "StringToPlaceInHeader" into <head> somehow!!!
context.Response.Write(OriginalResponse.ToString)
End If
End Sub
End Class
Can this be done this way? I would have thought that during the
EndRequest event I would have had access to the HTML, but I am unable
to get it. If I re-execute the page myself, I can get it using:
Dim str As System.IO.StringWriter = New System.IO.StringWriter
application.Server.Execute(application.Request.Path, str)
but I can't see how this will help. The application which produces
these cannot currently be modified so we are looking for a temporary
fix. I know there are other solutions (IISPROXY) but I have been asked
to look just at HttpModules.
Any ideas?