2010-01-14 6 views
2

J'ai créé un composant ActiveX, mais je n'ai pas pu accéder à ce composant ActiveX dans ASP.NET. Il donne le message d'erreur "Erreur d'exécution Microsoft JScript: Le serveur d'automatisation ne peut pas créer d'objet" lors de la création de l'objet ActiveX à l'aide de JavaScript.Comment utiliser ActiveX avec ASP.NET

ActiveX Code de composants:

using System.Runtime.InteropServices; 
using System.Windows.Forms; 

namespace FirstActiveX 
{ 
    [Guid("465F2D2E-C638-413e-A353-01E09DC4C7ED")] 
    [InterfaceType(ComInterfaceType.InterfaceIsDual)] 
    [ComVisible(true)] 
    public interface IMyActiveX 
    { 
     [DispId(1)] 
     string FirstName{ get; set;} 
     [DispId(2)] 
     string LastName { get; set; } 
     [DispId(3)] 
     string Address { get; set; } 
     [DispId(4)] 
     void Show(); 
    } 

    [Guid("8975D137-9D96-492c-87AE-37D653BADE16")] 
    [ProgId("FirstActiveX.MyActiveX")] 
    [ClassInterface(ClassInterfaceType.None)] 
    [ComDefaultInterface(typeof(IMyActiveX))] 
    [ComVisible(true)] 
    public class MyActiveX : IMyActiveX 
    { 
     #region IMyActiveX Members 

     public string FirstName { get; set; } 
     public string LastName { get; set; } 
     public string Address { get; set; } 

     public void Show() 
     { 
      MessageBox.Show(string.Format("Mr. {0} {1}, Address : {2}", FirstName, LastName, Address)); 
     } 

     #endregion 
    } 

} 

Code HTML:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebActiveXTest._Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title></title> 
</head> 
<script language="javascript" type="text/javascript"> 

    function UseActiveX() { 
     var x = new ActiveXObject("FirstActiveX.MyActiveX"); 
     x.FirstName = "Nirajan"; 
     x.LastName = "Singh"; 
     x.Address = "Kamothe, Navi Mumbai"; 
     alert(x.FirstName); 
     return false; 
    } 

</script> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
    <asp:Button ID="btnShow" runat="server" Text="Show" OnClientClick="return UseActiveX();" /> 
    </div> 
    </form> 

</body> 
</html> 

Répondre

1

Vous devez probablement enregistrer la DLL.

Voir this pour un tutoriel complet sur la façon de procéder.

regasm AClass.dll/TLB/codebase

2

Si le contrôle ActiveX est accessible avec JavaScript, le contrôle ActiveX doit être installé en tant que navigateur (IE uniquement) add-on avec permissions pour permettre les scripts. L'erreur que vous recevez est parce que le contrôle ActiveX n'est pas accessible dans IE.

Vous pouvez utiliser des contrôles ActiveX sur le serveur (dans ASP.NET), mais ce serait inhabituel. Les contrôles ActiveX sont principalement pour le navigateur, mais comme un contrôle ActiveX est également une DLL COM, c'est possible. Je recommande de ne pas développer votre propre contrôle ActiveX, la sécurité IE est plus stricte et, sauf pour un usage interne (derrière un pare-feu), la plupart des gens (visiteurs de votre page Web) résisteront à l'installer sur leur ordinateur .

Questions connexes