Login or Sign up Help | Site Map
Connecting Tech Pros Worldwide

IIS7 ASP Response object incompatible with MSXML transformNodeToObject

Question posted by: Anthony Jones (Guest) on August 8th, 2008 05:05 PM
People,

Anyone else got an IIS7 server out there that they can test this little ASP
file:-

<%
Set xml = Server.CreateObject("MSXML2.DOMDocument.3.0")
xml.loadXML "<root />"

Set xsl = Server.CreateObject("MSXML2.DOMDocument.3.0")
xsl.loadXML "<xsl:stylesheet
xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" version=""1.0"">" & _
"<xsl:output method=""xml"" encoding=""UTF-8"" />" & _
"<xsl:template match=""root""><ok /></xsl:template>" & _
"</xsl:stylesheet>"

Response.ContentType = "text/xml"
Response.CharSet = "UTF-8"
xml.documentElement.transformNodeToObject xsl, Response

%>

The above works fine on IIS6 and below. On IIS7 however it fails with
0x80004001 Not Implemented on the transformNodeToObject.

It seems something has changed in either MSXML or ASP that breaks this code.

Varitions attempted:-

Use MSXML6: Still Fails
Set Response.CodePage = 65001: Still fails
Set encoding in output element to "Windows-1252": Still fails
Set method to html: Still fails

Pass a different object that implements IStream: Succeeds.

Has Response stop implementing IStream use DOMDocument.Save and pass in the
Response object. That succeeds also so Response still implements IStream.

I note the MSXML3.dll is SP10 on the 2008 server whereas my MSXML3.dll on
the 2003 server is SP9.

Can't find any info on changes though.

Does anyone have any light to shed or can confirm the problem?

--
Anthony Jones - MVP ASP/ASP.NET


Would you like to answer this question?
Sign up for a free account, or Login (if you're already a member).
Bob Barrows [MVP]'s Avatar
Bob Barrows [MVP]
Guest
n/a Posts
August 8th, 2008
05:05 PM
#2

Re: IIS7 ASP Response object incompatible with MSXML transformNodeToObject
Anthony Jones wrote:
Quote:
Originally Posted by
People,
>
Anyone else got an IIS7 server out there that they can test this
little ASP file:-
>

Leaves me out ... sorry.

--
Microsoft MVP - ASP/ASP.NET
Please reply to the newsgroup. This email account is my spam trap so I
don't check it very often. If you must reply off-line, then remove the
"NO SPAM"



Martin Honnen's Avatar
Martin Honnen
Guest
n/a Posts
August 9th, 2008
12:35 PM
#3

Re: IIS7 ASP Response object incompatible with MSXML transformNodeToObject
Anthony Jones wrote:
Quote:
Originally Posted by
xml.documentElement.transformNodeToObject xsl, Response
>
%>
>
The above works fine on IIS6 and below. On IIS7 however it fails with
0x80004001 Not Implemented on the transformNodeToObject.


Does it work if you use
xml.transformNodeToObject xsl, Response
?

--

Martin Honnen --- MVP XML
http://JavaScript.FAQTs.com/

Anthony Jones's Avatar
Anthony Jones
Guest
n/a Posts
August 9th, 2008
03:15 PM
#4

Re: IIS7 ASP Response object incompatible with MSXML transformNodeToObject
"Martin Honnen" <mahotrash@yahoo.dewrote in message
news:ePpHlJh%23IHA.4196@TK2MSFTNGP02.phx.gbl...
Quote:
Originally Posted by
Anthony Jones wrote:
>
Quote:
Originally Posted by
xml.documentElement.transformNodeToObject xsl, Response

%>

The above works fine on IIS6 and below. On IIS7 however it fails with
0x80004001 Not Implemented on the transformNodeToObject.

>
Does it work if you use
xml.transformNodeToObject xsl, Response
?
>



Martin, Good idea, still doesn't work though. This does appear to be
specific to the use of transformNodeToObject and the Response object. It
works when other IStream implementers are passed to transformNodeToObject
and other methods that are designed to write to an IStream work with the
Response object.

--
Anthony Jones - MVP ASP/ASP.NET



Martin Honnen's Avatar
Martin Honnen
Guest
n/a Posts
August 9th, 2008
05:35 PM
#5

Re: IIS7 ASP Response object incompatible with MSXML transformNodeToObject
Anthony Jones wrote:
Quote:
Originally Posted by
Quote:
Originally Posted by
Quote:
Originally Posted by
>>xml.documentElement.transformNodeToObject xsl, Response

Quote:
Originally Posted by
Quote:
Originally Posted by
Quote:
Originally Posted by
>>The above works fine on IIS6 and below. On IIS7 however it fails with
>>0x80004001 Not Implemented on the transformNodeToObject.


Quote:
Originally Posted by
This does appear to be
specific to the use of transformNodeToObject and the Response object.


As long as you want to create XML with the transformation you could
first transform to an MSXML DOM document and then save that to the
Response object. But writing HTML or plain text as the transformation
result to the Response object does not seem possible then which is quite
a breaking change.

--

Martin Honnen --- MVP XML
http://JavaScript.FAQTs.com/

Anthony Jones's Avatar
Anthony Jones
Guest
n/a Posts
August 9th, 2008
06:15 PM
#6

Re: IIS7 ASP Response object incompatible with MSXML transformNodeToObject
"Martin Honnen" <mahotrash@yahoo.dewrote in message
news:ey43eWk%23IHA.5392@TK2MSFTNGP04.phx.gbl...
Quote:
Originally Posted by
Anthony Jones wrote:
>
Quote:
Originally Posted by
Quote:
Originally Posted by
>xml.documentElement.transformNodeToObject xsl, Response

>
Quote:
Originally Posted by
Quote:
Originally Posted by
>The above works fine on IIS6 and below. On IIS7 however it fails with
>0x80004001 Not Implemented on the transformNodeToObject.

>
>
Quote:
Originally Posted by
This does appear to be
specific to the use of transformNodeToObject and the Response object.

>
As long as you want to create XML with the transformation you could
first transform to an MSXML DOM document and then save that to the
Response object. But writing HTML or plain text as the transformation
result to the Response object does not seem possible then which is quite
a breaking change.
>



Exactly, code isn't going to migrate to IIS7 without modification.
Fortunately for myself my real world stuff uses a library so I need only
tweak the library with a workaround, whenever I can come up with one.

For others this could be a more painful experience. I'll try to dig down
further, currently its not clear whether the problem is in SP10 of MSXML or
IIS7s ASP Response object.

--
Anthony Jones - MVP ASP/ASP.NET



Anthony Jones's Avatar
Anthony Jones
Guest
n/a Posts
August 13th, 2008
04:35 PM
#7

Re: IIS7 ASP Response object incompatible with MSXML transformNodeToObject
"Anthony Jones" <Ant@yadayadayada.comwrote in message
news:%23pjwOeX%23IHA.2060@TK2MSFTNGP05.phx.gbl...
Quote:
Originally Posted by
People,
>
Anyone else got an IIS7 server out there that they can test this little

ASP
Quote:
Originally Posted by
file:-
>
<%
Set xml = Server.CreateObject("MSXML2.DOMDocument.3.0")
xml.loadXML "<root />"
>
Set xsl = Server.CreateObject("MSXML2.DOMDocument.3.0")
xsl.loadXML "<xsl:stylesheet
xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" version=""1.0"">" & _
"<xsl:output method=""xml"" encoding=""UTF-8"" />" & _
"<xsl:template match=""root""><ok /></xsl:template>" & _
"</xsl:stylesheet>"
>
Response.ContentType = "text/xml"
Response.CharSet = "UTF-8"
xml.documentElement.transformNodeToObject xsl, Response
>
%>
>
The above works fine on IIS6 and below. On IIS7 however it fails with
0x80004001 Not Implemented on the transformNodeToObject.
>
It seems something has changed in either MSXML or ASP that breaks this

code.
Quote:
Originally Posted by
>
Varitions attempted:-
>
Use MSXML6: Still Fails
Set Response.CodePage = 65001: Still fails
Set encoding in output element to "Windows-1252": Still fails
Set method to html: Still fails
>
Pass a different object that implements IStream: Succeeds.
>
Has Response stop implementing IStream use DOMDocument.Save and pass in

the
Quote:
Originally Posted by
Response object. That succeeds also so Response still implements IStream.
>
I note the MSXML3.dll is SP10 on the 2008 server whereas my MSXML3.dll on
the 2003 server is SP9.
>
Can't find any info on changes though.
>
Does anyone have any light to shed or can confirm the problem?
>


Here is an update on this problem.

MSXML 3.0 SP10 (msxml3.dll 8.100.1043.0) and MSXML 6.0 SP2 (msxml6.dll
6.20.1076.0)

I've only found these on Server 2008 although I haven't checked an XP SP3
machine or Vista SP1.

Both of these now call the Commit method on the IStream interface passed to
the transformNodeToObject method. Previous versions did not do this. The
Response object of ASP does not implement this method and throws an error
when asked to do so.

The work round is to create a Wrapping Implementation of IStream and absorb
the Commit call.

:(


--
Anthony Jones - MVP ASP/ASP.NET



 
Not the answer you were looking for? Post your question . . .
184,042 Experts ready to help you find a solution.
Sign up for a free account, or Login (if you're already a member).

Latest Articles: Read & Comment
  • Didn't find the answer you were looking for?
    Post Your Question
  • Top Community Contributors