【问题标题】:Call COM object from classic ASP从经典 ASP 调用 COM 对象
【发布时间】:2010-11-14 02:41:57
【问题描述】:

如何从经典的 ASP 中调用 COM 对象?我很努力,但找不到好的教程。有什么建议吗?

我在经典 ASP 中使用 C#。

【问题讨论】:

  • 你不能在经典的 ASP 中使用 C#;不支持!
  • 我正在维护一些遗留代码,也许我叫这个名字是错误的,因为我认为语法相似。 :-) 你如何命名编程语言,就叫它经典的 ASP?
  • IIRC,经典 ASP 有两种语言引擎:VBScript 和 JavaScript。您总是在页面顶部指定要使用的那个: ...默认为 VBSCript,但可以通过 IIS 为虚拟目录或站点更改此设置。
  • 是的,如果我不分配任何脚本,应该是VBscript?然后我正在使用 VBScript。

标签: vbscript asp-classic com


【解决方案1】:

在经典 ASP 中实例化 COM 对象:

Dim rs
Set rs = Server.CreateObject("ADODB.Recordset")

COM 对象被注册(在注册表中),名称为 ProgId,在上述 sn-p 中为 ("ADODB.Recordset")。

这是一个教程:Using COM Objects

更新,响应张贴者 cmets:如果您正在创建一个 .NET 程序集,那么您将需要在其上运行 regasm.exe 以创建必要的信息,以允许 COM 客户端创建 .NET Framework 类。

regasm.exe 工具通过读取类的声明来工作,尤其是类级属性 GuidAttribute 和 ProgID,如下所示:

using System.Runtime.InteropServices;

[GuidAttribute("581C28BD-E701-4AC1-BD75-0979BCEEC91E"),
ProgId("WordAddin1.Connect")]
public class Connect : Object, Extensibility.IDTExtensibility2
{

}

【讨论】:

  • 感谢 Mitch,我正在调用一些自定义的第 3 方 COM 对象,而不是 .Net 内置对象。我也是这个主题的初学者,我想阅读一些长达几页的教程,让我了解全局。有什么推荐的读物吗?
  • 严格来说,.NET 没有任何“内置”COM 对象(但它确实提供了一些包装器)。
  • 感谢 Mitch,我正在使用 C# 编写 COM 对象,并让经典的 ASP 调用它。关于如何使用 C# 创建 COM 对象的方法可以在这里找到 => codeproject.com/KB/COM/com_object_in_c_.aspx?display=Print 在这个方法中我认为没有 progid,只有一个类型库?我需要生成一个额外的 progid?
【解决方案2】:

如果您使用的是 JavaScript:

var obj = new ActiveXObject("Some.Object")

例如,看这个页面:

这假定“Some.Object”已注册为 COM 对象(例如,使用“regsvr32 /register SomeObject.dll”)。

为了进一步阅读,O'Reilly 有一本不错的书,您可以考虑阅读以下示例章节:

或本教程:

【讨论】:

  • 对不起,我正在使用 VBScirpt。我浏览了这些教程,似乎他们都在处理 Javascript 或处理如何通过经典 ASP 创建 COM 对象?我要问的是如何从经典 ASP 调用 COM 对象。有什么推荐的读物吗?
  • 尝试从 MSDN 站点上的此处开始:msdn.microsoft.com/en-us/library/ms524786.aspx 并浏览其余文档。
猜你喜欢
  • 2011-09-29
  • 1970-01-01
  • 2011-06-23
  • 2011-08-04
  • 1970-01-01
  • 1970-01-01
  • 2011-12-05
  • 1970-01-01
  • 2014-07-13
相关资源
最近更新 更多