用Asp调用C#写的COM组件。VS2005
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()
%>