[Mono-bugs] [Bug 568581] [PARSER] IE conditional script blocks are rendered incorrectly with ASP.NET engine.
bugzilla_noreply at novell.com
bugzilla_noreply at novell.com
Tue Feb 1 02:54:08 EST 2011
https://bugzilla.novell.com/show_bug.cgi?id=568581
https://bugzilla.novell.com/show_bug.cgi?id=568581#c3
Abe Gillespie <abe.gillespie at gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |abe.gillespie at gmail.com
--- Comment #3 from Abe Gillespie <abe.gillespie at gmail.com> 2011-02-01 07:54:06 UTC ---
Since this is still open and still affecting me I had to figure out a
work-around. If anyone else is interested:
using System;
using System.IO;
using System.Text;
namespace WebFix
{
public class FixMonoIeConditional : MemoryStream
{
const string Target = "IE]>IE]>";
Stream _out;
public FixMonoIeConditional(Stream output)
{
_out = output;
}
public override void Write(byte[] buffer, int offset, int count)
{
var content = UTF8Encoding.UTF8.GetString(buffer);
var replace = content.Contains(Target);
byte[] newBuff;
if (replace)
{
content = content.Replace(Target, "IE]>");
newBuff = UTF8Encoding.UTF8.GetBytes(content);
}
else
newBuff = buffer;
_out.Write(newBuff, offset, newBuff.Length);
}
}
}
Then in your Global.asax.cs, add this:
protected void Application_PostReleaseRequestState(
object sender, EventArgs args)
{
if (Response.ContentType == "text/html")
Response.Filter = new FixMonoIeConditional(Response.Filter);
}
Now this is somewhat naive in that if the buffer boundary breaks in the middle
of the offending string then the match and subsequent fix will not occur. But
that's a very slim chance since includes should happen toward the top of pages
(and the first buffer pass should *should* grab all the include statements).
--
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
More information about the mono-bugs
mailing list