从COM组件调用.NET组件编程实战

在我的编程实践中,需要从.NET的Web Form页面传递加密的字符串信息(如用户名和密码等)到ASP页面,然后在该页面对该加密字符串进行解密。如果传递的不是加密串,通过GET或POST的方式就可以直接传递并在ASP页面中接收,但问题是在.NET的Web Form页面中加了密的字符串如何才能在ASP中进行解密呢?这主要由于ASP并不能直接访问由.NET提供的托管类和组件。这时我们就只能借助于COM组件来实现了,通过COM的互操作我们可通过.NET生成COM组件,然后在ASP页面中访问该COM组件就可以了。
本文实现的是将加密的用户名与密码从.aspx页面传递到.asp页面,下面就来介绍这些操作的具体步骤:
一、制作具有加密、解密字符串的.NET程序集(VS.NET类库工程)
这个程序集将会变成COM组件,使用DES对称加密代码,可以加密码,可以加密解密,支持中文!
//文件名:StringCrypt.cs
using System;
using System.Runtime.InteropServices;
using System.Security.Cryptography;
using System.IO;
using System.Text;
namespace jonson
{
// 首先建立接口,这个是Com必须使用的
[Guid("BF6F9C17-37FA-4ad9-9601-C11AD5316F2C")]
public interface IEncrypt
{
string Encrypt(string pToEncrypt,string sKey);
string Decrypt(string pToDecrypt,string sKey);
}
//接口的实现
[Guid("3FBDBB63-3C36-4602-89E1-73EDB0F167D0")]
public class StringCrypt : IEncrypt
{
// 加密的方法
public string Encrypt(string pToEncrypt, string sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
//把字符串放到byte数组中
byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
//byte[] inputByteArray=Encoding.Unicode.GetBytes(pToEncrypt);
//建立加密对象的密钥和偏移量
//原文使用ASCIIEncoding.ASCII方法的GetBytes方法
//使得输入密码必须输入英文文本

时间: 2024-11-03 14:14:00

从COM组件调用.NET组件编程实战的相关文章

VS.Net C# 调用 Active 组件

active 在编码中不可否认调用Active会给编程带来很大便利,虽然微软不太只持.net调用Active 组件.       本实例是一个简单Web 页面调用Active组件的例子,实现把数据传入并显示在active组件里的控件中. 实例代码如下:1.建立Active组件(这里用.net c#创建)        (本程序中:建立类库添加组件类后托放:label . button  .groupBox各一个) 需要注意的是在生成.dll之前一定要在类库的AssemblyInfo.cs中加入引

在ASP中调用DCOM组件的应用技巧

在ASP中调用DCOM组件的应用技巧 1.编写DCOM组件: 假设我们想通过ASP页面来远程启动DNS服务,并且DNS服务器与Web服务器不为同一台机器.我们可以编写一个ActiveX DLL 来实现这个功能. 首先我们建立一个批处理文件StartDNS.bat,文件中写入:Net Start DNS.将文件保存在DNS服务器的一个目录下,例如C:\ManDNS\: 其次我们编写 Dll 程序如下(VB编写): Public Function StartDNS() As Boolean On E

c#调用com组件的奇怪问题,各位大神帮忙

问题描述 c#调用com组件的奇怪问题最近做了一个简单的http服务器,要求在收到客户端发送的数据后根据数据的不同调用com组件的不同方法,现在总是没有响应,代码流程示例如下:1.线程定义thread=newThread(newThreadStart(listen));thread.IsBackground=true;thread.Start();2.方法体其中:c.OpenCard()是调用com组件的代码,该com组件由c++bulider编写.publicvoidlisten(){IPAd

关于在SQL-SERVER里调用COM组件

server Sql-server里可以调用基于IDispatch的COM组件 有兴趣的可以自己去查SQL帮助里的sp_OACreate.sp_OAMethod.sp_OADestroy等存储过程的用法. 下面是我在一个短信报警的小项目里的一些sql代码,报警信息通过各类软件插入到sql-server里,然后通过触发器调用组件,并发送短信到指定手机上去,实现自动报警功能. //测试数据库的触发器 ALTER TRIGGER message_Trigger1 ON dbo.message FOR

多线程-在html中调用ocx组件,其click事件在运行过程中如何改变按钮状态?

问题描述 在html中调用ocx组件,其click事件在运行过程中如何改变按钮状态? 20C 我在做一个简单的网页demo,使用html语言调用ocx组件的方式完成前端功能加载和运行,我使用了一个按钮来调用ocx组件.我现在的问题是:我需要通过UI界面来清楚表示ocx组件的运行进度,比如:点击"执行"按钮,在执行过程中,按钮框变成"正在执行..."或者增加某种进度提示信息,当ocx组件执行完成后,按钮状态能够还原.我使用了很多方式,比如:1.增加进度条:2.通过定时

使用AmplifyJS组件配合JavaScript进行编程的指南_基础知识

事件分发的作用 在为页面添加各类交互功能时,我们熟知的最简单的做法就是为页面元素绑定事件,然后在事件处理函数中,做我们想要做的动作.就像这样的代码: element.onclick = function(event){ // Do anything. }; 如果我们要做的动作不复杂,那么实际逻辑功能的代码,放在这里是可以的.如果今后需要修改,再到这段事件处理函数的位置来修改. 再进一步,为了做适当的代码复用,我们可能会把逻辑功能中的一部分分拆到一个函数内: element.onclick = f

调用函数-简单的com组件调用,用类厂的方式,调试到ix->ifun()内存报错。。

问题描述 简单的com组件调用,用类厂的方式,调试到ix->ifun()内存报错.. #include #include "ComExp1.h" #include "ComExp1_i.c" int main(int argc, char* argv[]) { IUnknown *pUnk=NULL; ICompute *pObject; //ICompute * pICompute; //定义一个ICompute 的接口指针: HRESULT hResult

informatica 自定义java组件调用的java包在哪里

问题描述 informatica 自定义java组件调用的java包在哪里 查找之前同事做的etl程序,有一个java包的调用,但找不到包从哪里进来的,无法分析逻辑.哪位大神知道自定义java组件的用法?不吝赐教 解决方案 查找class来自哪个包 XXXXXTools.class.getProtectionDomain().getCodeSource().getLocation()

C# 可以直接调用金税组件接口吗?

问题描述 C# 可以直接调用金税组件接口吗? C# 可以直接调用金税组件接口吗?还是需要通过别的程序来调用? 解决方案 看看这个实例有没有用:http://download.csdn.net/detail/wang781109/5692821 解决方案二: 谢了,可以调用,金税2.0平台是.net framework4.0开发的,跟我们平台不一致,引起错误.