加入引用,然后在ASPX页面用USING老操作

解决方案 »

  1.   

    原来用visual basic 、c++开发的Com 使用的方法。
    将 COM 组件转换为 .NET 程序集后,可以通过在 ASP.NET 页的顶部放置一条指令来将它导入该页。例如,下面的指令导入由 Tlbimp 实用工具创建的命名空间 MyNewNamespace:Dos模式下
    Tlbimp XPass.dll /out:XinNuo.dll /namespace:xnps. 由 Tlbimp.exe 生成的程序集文件必须放置在 ASP.NET 应用程序的 \bin 目录下。原始的 COM 组件文件必须对它所驻留的目录进行注册。
    在 ASP.NET 页中使用单线程 (STA) COM 组件(如使用 Visual Basic 开发的组件)时,必须在该 ASP.NET 页上的 <%@ Page > 标记中包括兼容性属性 aspcompat=true。、使用vs.net添加for example
     MClass aa=new MClass();
      object tt=aa.yourfunction(ref ttt);  引用b.dll,直接引用b.dll
      

  2.   

    采用meetweb(niky) 方法后,与我原来的错误相同
     “COM 函数的 Queryinterface 失败”
      

  3.   

    把你的组件打包发给我,我来试试
    [email protected]
      

  4.   

    请仔细看看我以前做的例子。原来dll是使用c++做的。
    你必须注意aa.ChangePass(ref tt).ToString ();
    参数变了ref tt..以前是double类型,看看是否错误在这里在 ASP.NET 页中使用单线程 (STA) COM 组件(如使用 Visual Basic 开发的组件)时,必须在该 ASP.NET 页上的 <%@ Page > 标记中包括兼容性属性 aspcompat=true。例如:
    <%@ Page Language="C#" Debug="true" aspcompat=true%>
    <%@Import Namespace="xs"%>
    <script language="C#" runat="server">  
    void Page_Load(Object sender, EventArgs e){
        object tt="888888"; 
        xs.MPassClassClass  aa=new xs.MPassClassClass();
        object tt1=aa.ChangePass(ref tt).ToString ();
         Response.Write("ttt");
        Response.Write(tt1);
      }
    </script>
    Viaul C#项目中使用
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using xs;namespace Web1
    {
    /// <summary>
    /// WebForm1 的摘要说明。
    /// </summary>

    public class WebForm1 : System.Web.UI.Page
    {   
    protected System.Web.UI.WebControls.Button Button1;
    protected System.Web.UI.WebControls.Label Label1;

    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    this.Label1.Text="测试成功!!";

    int a=this.Label1.Text.Length;
    DataSet ds=new DataSet();
    Ms aa=new MsClassClass();
    object ttt="888888";
    object tt=aa.ChangePass(ref ttt).ToString ();  

    Response.Write (tt);
    object XNPutSecret=Server.CreateObject("XinNuoPass.MPassClass");

    } #region Web Form Designer generated code
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.Button1.Click += new System.EventHandler(this.Button1_Click);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion private void Button1_Click(object sender, System.EventArgs e)
    {this.Label1.Text="我测试中的安装数据";

    }
    }
    }查看.dll文件
    Ildasm.exe 只对磁盘上的 PE 文件进行操作。它不对安装在全局程序集缓存中的文件进行操作。
    Ildasm.exe 生成的文本文件可以用作 MSIL 汇编程序 (Ilasm.exe) 的输入。这很有用,例如当编译用并非支持所有运行库元数据属性的编程语言编写的代码时。通过 Ildasm.exe 编译该代码并运行输出后,可以手动编辑结果 MSIL 文本文件以添加缺少的属性。然后可以通过 MSIL 汇编程序运行此文本文件以生成最终的可执行文件。
    注意 目前,无法对包含嵌入的本机代码的 PE 文件(例如,由 Visual C++ .NET 产生的 PE 文件)使用此技术。
    可以使用 MSIL 反汇编程序中的默认 GUI,在分层树视图中查看任何现有 PE 文件的元数据和反汇编代码。若要使用此 GUI,请在命令行中键入 ildasm,无需提供 PEfilename 参数或任何选项。从“文件”菜单中可以定位到希望加载到 Ildasm.exe 中的 PE 文件。若要保存为选定的 PE 显示的元数据和反汇编代码,请在“文件”菜单中选择“转储”命令。若要只保存分层树视图,请在“文件”中选择“转储树视图”命令。有关将文件加载到 Ildasm.exe 中和解释输出的详细指南,请参阅 Ildasm.exe 教程,该教程位于 .NET 框架 SDK 附带的 Samples 文件夹中。
    如果用包含嵌入资源的 PEfilename 参数提供 Ildasm.exe,则此工具生成多个输出文件:一个包含 MSIL 代码的文本文件,而每个嵌入的托管资源都有一个用该资源在元数据中的名称生成的 .resources 文件。如果 PEfilename 中有嵌入的非托管资源,则用 /output 选项为 MSIL 输出指定的文件名生成 .res 文件。
    注意 Ildasm.exe 只显示 .obj 和 .lib 输入文件的元数据说明。不反汇编这些文件类型的 MSIL 代码。
    可以对 .exe 或 .dll 文件运行 Ildasm.exe 来确定该文件是否是托管的。如果该文件不是托管的,则此工具将显示一条信息,说明该文件不包含有效的公共语言运行库头,并且无法反汇编。如果该文件是托管的,则此工具将成功运行。
      

  5.   

    好像不行,meetweb 你的例子是COM组件,我的是COM+组件。