提醒:本页面将不再更新、维护或者支持,文章、评论所叙述内容存在时效性,涉及技术细节或者软件使用方面不保证能够完全有效可操作,请谨慎参考!

我这里要说的是ASP,没错,不是ASP.NET,我们所要做的是如何让ASP像ASP.NET那样访问.NET Framework的内置对象,首先我们需要安装.NET Framework环境,然后下一步呢?CreateObject创建对象?答对了一半,不过有一点要让你失望了,那就是大多数.NET Framework类对于ASP是无法访问的,别急,仍然有大量.NET 类实现了可调用 COM 接口,也就是说,我们可以像创建普通COM对象那样创建它们。

在具体操作前,不妨打开我们的注册表,定位到HKEY_CLASSES_ROOT,然后你就会发现有大量的.NET类的ProgId和CLSID,这样我们就可以通过这些特征信息来创建并使用这些对象。

注册表中.NET对象的COM接口.png

Microsoft TechNet的《您好,脚本专家!》栏目 中介绍了如何在WScript脚本宿主中调用这些对象,比如System.Collections.ArrayList,我们现在可以除了Scripting.Dictionary外有了更多的选择,其中ArrayList的Sort排序等功能更是我们所垂涎的,比如脚本专家上的示例:

Set DataList = CreateObject _
      ("System.Collections.ArrayList")

DataList.Add "B"
DataList.Add "C"
DataList.Add "E"
DataList.Add "D"
DataList.Add "A"

DataList.Sort()

For Each strItem in DataList
    Wscript.Echo strItem
Next
Set DataList = Nothing

我们可以很容易的就将其改成ASP版本的代码:

<%
Set DataList = Server.CreateObject _
      ("System.Collections.ArrayList")

DataList.Add "B"
DataList.Add "C"
DataList.Add "E"
DataList.Add "D"
DataList.Add "A"

DataList.Sort()

For Each strItem in DataList
    Response.Write strItem
Next

Set DataList = Nothing
%>

经过测试这样是可行的,怎么样,是不是很方便,关于ArrayList更多的使用方法可以参考MSDN的.NET Framework手册了,这样我们写ASP程序又多了一种更为强大的选择,不过我还是奉劝还在搞鼓ASP的程序员,该换换口味了,为何不试试更为强大的ASP.NET或者PHP呢?

参考文档 《.NET COM+ Interop Component with Classic ASP》