0

I've got two Server 2016 machines running a Classic ASP application in an x64 Integrated pool and Shared Configuration.

I thought that both servers were setup identically, however one server gets an error on:

Set obj = Server.CreateObject("MSXml2.ServerXmlHttp.6.0")

Err.Number = 800401F3

ONLY in my application!

If I put that line in a separate ASP page, running in the same site, it completes normally (Err.Number=0)

I've found no Event Log entries.

What I've tried:

  • With and without version (.6.0 part)
  • Registry permissions
  • File permissions on msxml3.dll & msxml6.dll (both System32 and SysWOW64)
  • Un/reregister the same DLLs

I'm hoping for suggestions on where to look/how to trouble shoot this.

Scott H
  • 11

2 Answers2

0

If it runs fine on another page in the same site but not on another page in the same application, it must have to do with the application settings. Start with a empty web.config and add specific settings from your broken app.

If it runs fine in a basic page in the same app, your page is the problem.

Not sure what inside the configuration would cause this to break, but that's what I would try.

0

This was not a problem with object creation but with a bug (or change in behavior) in Server.CreateObject() and some code which handled multiple versions of a different COM DLL.

There was code that handled multiple possible versions of a DLL as follows:

    obj = Server.CreateObject("Version1.Object")

    If Err.Number <> 0 Then
        obj = Server.CreateObject("Version2.Object")
    End If

At the end of this, assuming one of these was successful, Err.Number = 0

In IIS 10.0 (Server 2016) a successful Server.CreateObject("Version2.Object") left the previous value in Err.Number from Server.CreateObject("Version2.Object").

New code:

obj = Server.CreateObject("Version1.Object")

If Err.Number <> 0 Then
    Err.Clear
    obj = Server.CreateObject("Version2.Object")
End If
Scott H
  • 11