当前位置:首页>>开发编程>>VS.NET>>新闻内容  
为ASP.NET“包装”外部调用DLL
作者:killuakun 发布时间:2007-12-5 20:02:12 | 【字体:

  现在接触一个需求,要使用一个网关接口实现短信发送,实现过程并不难,是使用[DllImport("*.dll")],但用ASP.NET调用别人写好的DLL还是头一次。看了一下COM和非托管代码的介绍,搞的云里雾里反而更不知道自己要什么了,还是亲自动手做一下就知道。

  这网关有一个实现的例子:

  程序代码

        [DllImport("MWGateway.dll")]//帐户登陆
        private static extern int MongateConnect(string ip, int port, string account, string pwd);
        [DllImport("MWGateway.dll")]//发送单向信息
        private static extern int MongateSendSms(int clientsock, string mobi, string note);
        [DllImport("MWGateway.dll")]//测试连接
        private static extern int MongateTestConn(int clientsock);
        [DllImport("MWGateway.dll")]//查询余额
        private static extern int MongateQueryBalance(int clientsocket);
        [DllImport("MWGateway.dll")]//查询使用   
        private static extern int MongateQueryUsed(int clientsocket);


  注意:以上代码是可以放在ASP.NET页面中直接运行的,但有个条件,就是那个MWGateway.dll文件得搞到%system32%目录中,放在bin中不行,会提示说找不到模块。

  这直接带来的问题是,没办法在服务器上部署,因为要服务器的%system32%中放入一个动态库是很难做到的。

  我查了一下,都说在ASP.NET2.0环境中是可以把DLL放在bin中的方式调用,但我实验失败了;如果是应用程序项目,要把DLL文件放在debug中,试了一下,确实可以。

  换个角度去实现它:我先写个类库项目,这个类的功能就是“解释”一下DLL中的方法,用ASP.NET调用这刚写的类库项目,就可以实现把DLL拷贝到Bin文件夹中完成调用了。在服务器上验证了一下,每个应用程序池都可以运行独立的DLL,并且互相无任何干扰。

  这种方式有点像某种“包装器”,和那个Runtime Callable Wrapper的思路近似。我的web应用程序的一部分可以连接到DLL,并且向上提供更多实用方法,设计模式中是叫接口模式。


文章来源:killuakun.com
·在ASP.NET中使用AJAX的简单方法
·ASP.NET后台代码实现XmlHttp跨域访问
·ASP.NET取得当前页面的完整URL
·如何在ASP.NET程序里面执行DOS命令
·IIS5IIS6IIS7的ASP.net请求处理过程比较
·ASP.NET备份SQL Server数据库的方法
·让网站图片“另存为”“无标题.bmp”的技巧
·ASP.NET GridView的分页功能
·ASP.NET实现字母+数字方式验证码
·ASP.NET采集系统万能正则表达式
 放生
 愚爱
 够爱
 触电
 白狐
 葬爱
 光荣
 画心
 火花
 稻香
 小酒窝
 下雨天
 右手边
 安静了
 魔杰座
 你不像她
 边做边爱
 擦肩而过
 我的答铃
 怀念过去
 等一分钟
 放手去爱
 冰河时代
 你的承诺
 自由飞翔
 原谅我一次
 吻的太逼真
 左眼皮跳跳
 做你的爱人
 一定要爱你
 飞向别人的床
 爱上别人的人
 感动天感动地
 心在跳情在烧
 玫瑰花的葬礼
 有没有人告诉你
 即使知道要见面
 爱上你是一个错
 最后一次的温柔
 爱上你是我的错
 怎么会狠心伤害我
 不是因为寂寞才想
 亲爱的那不是爱情
 难道爱一个人有错
 寂寞的时候说爱我