• 用Asp调用C#写的COM组件。VS2005 - [ASP]

    2008-08-15

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://yomin.blogbus.com/logs/27750006.html

    最近的一个项目要用到ASP来调用C#写的com组件。

    在网上找了很多相关的资料,由于不少文章的开发环境都是VS2003,所以遇到了不少问题。

    现在总结一下过程。

    1、创建一个C#的类库。名称为ASPcall。

     

    2、修改class1.cs的代码如下:

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Runtime.InteropServices;

    namespace ASPcall
    {
        [Guid("3B5D553B-2F2B-4c54-BFA6-33CC23380A49")]
        public interface ISamples
        {
            [DispId(0)]
            string[] isSamples();
        }
        public class Samples : ISamples
        {
            public Samples()
            {
            }

            public string isSamples()
            {
                return "OK";
            }

            #region ISamples 成员

            string[] ISamples.isSamples()
            {
                throw new Exception("The method or operation is not implemented.");
            }

            #endregion
        }
    }

    注意: Guid用工具菜单中的创建GUID工具生成。

    3、修改AssemblyInfo.cs中的[assembly: ComVisible(false)]为[assembly: ComVisible(true)]。

    4、打开 Visual Studio 2005 命令提示 工具。

    运行 sn -k ASPcall.snk

    将生成的ASPcall.snk复制到Class1.cs所在的目录。

    5、设置项目属性。选中 生成 中的 为 COM Interop 注册

    6、选中 签名 中的 为程序集签名。 选择刚才创建的 ASPCall.snk 文件。

    7、生成解决方案。

    8、在 Visual Studio 2005 命令提示 中进入bin\debug目录,执行  regasm ASPCall.dll /codebase

    9、在ASP中调用的代码如下:

    <%
    Set objDns = Server.CreateObject("ASPCall.Samples")
    Response.Write objDns.isSamples()
    %>

    错误代码汇总

    Server 对象 错误 'ASP 0177 : 800401f3'

    Server.CreateObject 失败

    /test.asp,行 2

    800401f3

    800401f3

    原因:DLL未注册

    解决办法:重新执行第8步。

    80040ffff http://support.microsoft.com/kb/945701/zh-cn

    原因:这是由于服务器安装了IE7并且安装了安装大于 MS07-045 (KB937143) 的 IE 累积安全更新所导致的。

    解决办法:赋予 ISUR_<你的用户名> 用户 对注册表 HKEY_USERS\S-1-5-20\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones 的读取权限。

    80070002

    原因:找不到指定文件,注册dll文件时未添加/codebase参数。

    解决办法:重复执行第8步。

    参考:

    http://blog.csdn.net/gby630/archive/2007/11/06/1870077.aspx

     


    收藏到:Del.icio.us




    评论

  • 慕名而来。。地板膜拜
  • 在VERY CD上面下专辑,看到牛人的BLOG地址,前来膜拜一下~
    无夜游民_回复是头好熊说:
    有另一个BLog的地址 那家伙比价牛 嘿嘿
    2008-08-26 09:00:33