Microsoft KB Archive/287663

= INFO: Event ID 4134 in Microsoft Transaction Server or COM+ =

Article ID: 287663

Article Last Modified on 7/17/2006

-

APPLIES TO


 * Microsoft Transaction Services 2.0, when used with:
 * Microsoft Windows NT 4.0
 * Microsoft COM+ 1.0, when used with:
 * Microsoft Windows 2000 Standard Edition

-



This article was previously published under Q287663



SUMMARY
If a client application asks Microsoft Transaction Server (MTS) or COM+ to create an instance of a component, and if that object creation fails, the following error (or similar) is logged in the Application event log:

Event Type: Error

Event Source: Transaction Server

Event ID: 4134

Description:

Failed on creation from object context:



(Microsoft Transaction Server Internals Information: File: d:\viper\src\runtime\context\ccontext.cpp, Line: )

The method name indicates how MTS was trying to instantiate the component. The additional information section may include some combination of the ProgID, CLSID, package name, interface name, and the interface ID (IID) that MTS cannot instantiate.

This error occurs in COM+ on Windows 2000, as well as in MTS 2.0 on Windows NT 4.0.



MORE INFORMATION
The 4134 error indicates that MTS/COM+ is unable to create an object from a component dynamic-link library (DLL). If present in the error, the ProgID, the CLSID, or the IID indicate which object cannot be created. The method name indicates which creation method returns the error. All of these values provide information about the nature of the failure.

The following methods can fail and return error 4134:
 * CoGetClassObject
 * IClassFactory::CreateInstance
 * CreateInstance
 * CoCreateInstance

For information about the meaning of these method failures, click the link for each method to view the contents below.

The CoGetClassObject Method
MTS cannot get a ClassFactory at all from the component. This error most often indicates that the component DLL cannot be found, MTS encounters a permissions problem when it accesses the DLL, or the MTS package identity account is invalid. One common cause is that MTS tries to instantiate a component that is configured to run in an MTS server package, and the package identity is set to the Interactive User. If no one is logged on at the server console, there is no interactive user, and the instantiation attempt fails.

The IClassFactory::CreateInstance Method
MTS cannot get a ClassFactory object for a custom or third-party component. MTS tries the CreateInstance method from the standard IClassFactory interface, and this CreateInstance call fails. One scenario that generates this error is when an Active Server Pages (ASP) page tries to instantiate a component (which is in-process, out-of-process, or remote) that is not installed locally into MTS, and that component generates an error during its startup code.

The CreateInstance Method
MTS calls CreateInstance through one of the MTS-specific ClassFactory interfaces, and the instantiation attempt fails. One common cause of this error is if an MTS component uses ObjectContext::CreateInstance to create an instance of another component in the same MTS package, and the second component causes an error on startup. You may also receive this variation of the error if an ASP page tries to use Server.CreateObject to create an instance of a remote component, and there is a firewall between the MTS computer and the Internet Information Server (IIS) computer.

The CoCreateInstance Method
A custom or third-party component that is installed in MTS tries to instantiate a non-MTS object through the context wrapper. This can happen if an MTS component calls ObjectContext::CreateInstance on a COM component that is not configured in MTS; thus, the instantiation attempt fails.

Troubleshooting the 4134 Error
If you receive the 4134 error, obtain the CLSID and/or ProgID of the component from the error description. Then, use these troubleshooting steps to try to narrow down the cause of the problem:  Verify that the component DLL or EXE exists and is registered correctly. Verify that the identity account for the package has sufficient permissions on the system. If the identity is set to &quot;Interactive User&quot;, make sure that someone is always logged on at the console of the server. For more information on the required rights and permissions, see the &quot;References&quot; section. Use Oleview.exe to test object creation outside of IIS and MTS. Oleview.exe is installed with the Microsoft Visual Studio 6.0 Tools. You can also download the stand-alone version of Oleview.exe from the following Microsoft Web site:

http://www.microsoft.com/downloads/details.aspx?familyid=5233b70d-d9b2-4cb5-aeb6-45664be858b6&amp;displaylang=en

To test the component directly, make sure that you remove the component from MTS first. Thoroughly check for errors in any startup code that executes when the object is created. For example, examine code in the Microsoft Visual Basic Class_Initialize method or in the Active Template Library (ATL) FinalConstruct method. Verify that all dependency modules are installed on the server, have the correct version number, and are accessible by the component. You can use Depends.exe, which is also installed with the Visual Studio 6.0 Tools, to view the module dependencies of the component. These dependency modules include the Microsoft virtual machine for Java (Microsoft VM) for Microsoft Visual J++ components and the Visual Basic virtual machine for Visual Basic components. If the component is written in Visual Basic, verify that it was compiled with the &quot;Unattended Execution&quot; and &quot;Retained in memory&quot; project options. If not, set these options, as well as &quot;Binary Compatibility&quot; in the Visual Basic project properties, and then recompile the DLL.</li> If you are calling the component from ASP, and the component is on a different server than IIS, verify that there are no firewalls between the two servers. If a firewall is present, see the &quot;References&quot; section for more information on how to call remote components through a firewall.</li> If you cannot instantiate the component through Oleview.exe, verify that the DLL is not corrupted. Remove the component from MTS, unregister it, and delete the DLL. Then, redeploy the DLL to the server.</li> If it is a Visual Basic component, make sure that it has not been recompiled several times, which breaks binary compatibility. It may confuse MTS when there are several entries in the registry.</li> Verify that the latest version of Microsoft Windows NT Service Pack has been applied after you install the Windows NT Option Pack.</li></ul>

<div class="references_section">