ASP 调用C#编写的DLL的方法(成功运行)
### ASP调用C#编写的DLL的方法:成功运行与数据获取 在Web开发领域,ASP(Active Server Pages)与C#作为两种不同的编程环境和技术栈,它们之间的交互和集成是许多开发者关注的重点之一。本文将深入探讨如何在ASP环境中调用由C#编写的DLL,实现跨语言的数据交换和功能拓展。 #### 一、ASP调用C# DLL的基本原理 在.NET框架下,ASP可以利用COM+组件或.NET Remoting等技术来调用C#编写的DLL。其中,通过注册C# DLL为COM组件并使其对外暴露接口,是ASP能够调用C# DLL的一种常见方式。这一过程涉及到了.NET框架中的COM互操作性,即允许非托管代码(如ASP)访问托管代码(如C#)的功能。 #### 二、关键步骤详解 ##### 1. 创建C# DLL 需要在Visual Studio中创建一个C#类库项目,定义公开接口供ASP调用。例如,在上述部分代码中,定义了一个名为`ITest`的接口,其中包含一个返回字符串的方法`TestString()`。然后,通过继承`ITest`接口创建`Test`类,并实现其方法。 ##### 2. 强名称签名 为了确保DLL的安全性和唯一性,需对DLL进行强名称签名。这一步骤可以通过使用Visual Studio中的“签名”选项完成,或者通过命令行工具`sn.exe`手动进行。具体做法是在`AssemblyInfo.cs`文件中添加`[assembly: AssemblyKeyFile("路径\\test.snk")]`,这里的`test.snk`是预先创建的密钥对文件。 ##### 3. 注册DLL 使用`regasm.exe`工具将C# DLL注册为COM组件,使得非托管代码(如ASP)能够调用其中的方法。执行命令`regasm /tlb DLL路径`即可完成注册,其中`/tlb`参数指明了要生成TypeLib。 ##### 4. 安装到GAC(Global Assembly Cache) 对于需要在多台服务器上共享的DLL,将其安装到全局程序集缓存(GAC)中是一个推荐的做法。使用`gacutil.exe`工具可以实现这一目的,执行`gacutil /i DLL路径`即可将DLL添加至GAC。 #### 三、ASP调用DLL 一旦C# DLL被正确注册和安装,ASP就可以通过标准的COM对象引用方式来调用DLL中的方法。在ASP页面中,可以使用`CreateObject`函数创建COM对象实例,然后调用其方法。 例如,假设已注册的DLL提供了名为`MyLibrary`的COM组件,且该组件有一个名为`MyMethod`的方法,那么可以在ASP页面中这样调用: ```vb Dim objLib Set objLib = Server.CreateObject("MyLibrary") Response.Write objLib.MyMethod() ``` #### 四、注意事项 - 确保ASP运行环境(IIS)具有足够的权限访问和调用C# DLL。 - 需要注意跨语言调用可能引入的性能开销和异常处理机制。 - 在实际应用中,还应考虑DLL版本管理、安全性以及错误日志记录等问题。 通过以上步骤,ASP与C#编写的DLL之间可以建立起稳定、高效的交互渠道,为Web应用程序带来更丰富的功能和更高的灵活性。
前一阵子一直在忙一个项目,其中要用到ASP调用C#的DLL,网上资历料不少,总结了一下,写个例子
出来
首先建立一个类库的项目
之后编写一个接口,ASP要调用的对象实现这个接口,代码如下(要有一个没有参数的构造函数)
using System;
using System.Runtime.InteropServices;
namespace Test
{
[Guid("123AC4E1-BEB0-45a1-BE3F-91BDD16A117A")]
public interface ITest
{
[DispId(0)]
string TestString();
}
public class Test : ITest
{
//从工具下的创建GUID取得
public Test()
{
- wsyyyysw2015-05-20可以用,但是我又碰到新问题,在本机可以,到服务器上就不行,一个是xp系统,一个是2003系统。
- 刘先生的csdn2017-02-09网上随便都有的东西,复制过来换积分。鄙视
- 柴强2016-09-22还不错可以用
- 弘白2015-10-19实例与网上的差不多,虽然没解决我的问题,不过例子是正确的,我遇到的情况是,写的DLL使用regasm注册成功了,ASP调用失败,原因是DLL是64位的,IIS7.5的应用池需要设置为64位的,也就是高级设置里面有个“是否32位应用程序”设置为默认的“False”就可以了。因为之前看到说IIS7.5下要设置成32位,就给设置成32位了,实践证明,无论是32位还是64位,都可以正常跑ASP
- 小小牛人2017-07-29什么垃圾~骗分的
- 粉丝: 1
- 资源: 12
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助