-
用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
随机文章:
ASP中的一些字符 2007-08-10一些网页设计参考的网站 2007-08-03ASP函数速查表 2007-08-17CSS样式命名规则参考 2007-08-08ASP中自定义文件下载 2007-08-03
收藏到:Del.icio.us








评论