各位高手...请问如何在ASP调用一个用C#.NET写成的类或组件

swhzp 2006-03-14 03:31:20
请问如何在ASP中调用一个用C#.NET写成的类或组件,里面引用了其它组件..我试过把它编译成组件,但出错说引用的组件没有强名称...如果说换成调用WebService的话...又应该如何实现呢??请各位赐教啊...小弟很急...望能有源码或例子....
...全文
530 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
swhzp 2006-03-16
  • 打赏
  • 举报
回复
路过说说这是什么原因啊??
是是非非 2006-03-16
  • 打赏
  • 举报
回复
http://blog.csdn.net/eglic/archive/2006/03/16/626152.aspx
是是非非 2006-03-16
  • 打赏
  • 举报
回复
漏了一个:类必须有一个无参构造函数
chenyu112 2006-03-16
  • 打赏
  • 举报
回复
学习
是是非非 2006-03-16
  • 打赏
  • 举报
回复
注意:
1、每个类名对应一个接口名,接口名是类名前加上一个大写的I,推荐这么做
2、尽量使用通用的数据类型
3、GUID生成的时候,选择注册表类型,然后要去掉前后的花括号
4、尽量不要使用多线程
5、如果编译为Release模式,上面所说的所有目录,都把Debug替换成Release
是是非非 2006-03-16
  • 打赏
  • 举报
回复
注意:上面的GUID是在工具菜单->生成GUID里面复制的

3、运行cmd命令,打开一个控制台窗口,进入TestDll工程的目录,进入 Obj\Debug目录
4、运行 sn -k TestDll.snk (sn.exe这个文件在 D:\Program files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin)这样就生成了一个 TestDll.snk文件
5、在工程的解决方案资源管理器里面,双击AssemblyInfo.cs 修改 [assembly: AssemblyKeyFile("TestDll.snk")] (原来是 "" ,把文件名输入)
6、编译这个工程,生成 Bin\Debug\TestDll.dll,在控制台窗口进入这个目录
7、输入下面的命令:regasm /tlb:TestDll.tlb TestDll.dll 注册DLL,并生成一个tlb文件
tlb是给VB开发使用的,可以不要这个
8、继续在控制台里运行这个:gacutil /i TestDll.dll 把这个Dll加入全局Assembly Cache(实际上可以不要,在RegAsm里面已经自动加入了,为了保险,我还是操作一次)
9、在ASP里面引用这个,代码如下:
<%
Dim o : Set o=Server.CreateObject("TestDll.Sample")
Response.Write o.About() & "<br />"
Dim a,b : a=123 : b=456
Response.Write a & " + " & b & "=" & o.Add(a,b)
Set o=Nothing
%>
页面输出为:
欢迎访问 http://www.eglic.com
123 + 456=579
----------------

搞定收工
是是非非 2006-03-16
  • 打赏
  • 举报
回复
我写一个实例过程:
--------------------------
1、启动VS.Net 2003,新建一个C# DLL项目,项目名称输入TestDll
2、在TestDll项目的Class1.cs里面输入以下代码:

using System;
using System.Runtime.InteropServices;

namespace TestDll
{
[Guid("93FFB6A2-4B32-4546-B19F-C3D5DB22E57F")]
public interface ISample{
[DispId(0)]
string About();
[DispId(1)]
int Add(int a,int b);
}
public class Sample : ISample{
public Sample(){}
public string About() {return "欢迎访问 http://www.eglic.com";}

public int Add(int a, int b) {return a+b;}
}
}
是是非非 2006-03-15
  • 打赏
  • 举报
回复
用C#编写COM的时候,所有的Class都必须有一个对应的Interface

我有一个用C#写的Socket类,给ASP用的,需要就PM我
是是非非 2006-03-15
  • 打赏
  • 举报
回复
http://www.chinaaspx.com/archive/dotnet/17323.htm
这里还有
是是非非 2006-03-15
  • 打赏
  • 举报
回复
这里有文章

https://www.microsoft.com/china/msdn/archives/library/dndotnet/html/callnetfrcom.asp
是是非非 2006-03-15
  • 打赏
  • 举报
回复
C# 可以编写COM组件

不过编写出来的东东需要一些处理

首先就是,你得指定类和接口的GUID,还有类或者接口里面每个方法/属性的 DISPID

然后用 sn.exe -k a.snk 命令生成一个新的密钥,放在 Proj\obj\Release目录里面
在 AssemblyInfo.cs里面修改相应的密钥文件

然后编译。

编译后用 一个啥工具,忘记了,好像还要导出tlb文件

然后RegAsm,可能还需要 GacUtil工具
swhzp 2006-03-15
  • 打赏
  • 举报
回复
能不能说详细点啊??
swhzp 2006-03-15
  • 打赏
  • 举报
回复
我编译注册了..生成tlb...可是在ASP中还是调用不到啊...

Set objs=Server.CreateObject("ClassLibrary.Seacher")

一加上这行代码就出错啊..为什么呢?如果改为WebService调用的话,应该怎么做呢?
fason 2006-03-14
  • 打赏
  • 举报
回复
regasm

createobject("namespace.class")

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧