打印本文 关闭窗口 | |
Asp组件初级入门与精通 | |
作者:龙卷风.NET 文章来源:csdn.net 点击数 更新时间:2006/4/22 22:53:20 文章录入:admin 责任编辑:admin | |
|
|
在运行前几章的例子,可能或多或少的都会碰上一些问题 如:组件编译后,又要修改,发生”权限被拒绝,’f:\csdn\fcom.dll’”等等的错误。 当asp页面浏览时,打开任务管理器,会看到一个dllhost.exe,用户名为IWAM_YANG的进程。IWAM_YANG会根据计算机名而有所不同。 可以使用以下几种方式来解决 1. 重新启动iis. 在控制面板中找到管理工具->internet信息服务->右键点击左边树图第二层本地计算机->所有任务->重新启动IIS即可,这个操作需要一点时间。 此时你可以看到这个dllhost.exe的进程已经关闭 2. 上面这种方法的缺点就是当前所有的网站都被关闭直到重新启动 有没有针对单个网站或者虚拟目录的?有 在控制面板中找到管理工具->internet信息服务->找到你的组件运行的虚拟目录。->右键属性->第一项虚拟目录中->应用程序保护->点击卸载即可。 此时你可以看到这个dllhost.exe的进程已经关闭 3. 如果你觉得麻烦,直接在Windows任务管理器中结束该进程既可 4. 最后一种方法 在控制面板中找到管理工具->组件服务->在树图中点击计算机,我的电脑,正在运行的进程->IIS Out-Of-Process Pooled Applications(2860)->右键关闭即可 此时你可以看到这个dllhost.exe的进程已经关闭 [NextPage] 我们来做一个组件,一个可以生成GUID的组件 全局唯一标志(GUID) 一个GUID可以表示成32个字符的十六进制格式。COM提供了一个名叫CoCreateGuid的系统级函数,可以用它来生成新的GUID。该函数依靠一种类似使用计算机网卡的唯一标志符和系统时钟等信息的算法,来创建一个在时间和空间上都唯一的GUID. 打开vb6,新建Activex Dll工程。工程名修改为fCom,类名修改为fC8 Option Explicit Private Type GUID Data1 As Long Data2 As Long Data3 As Long Data4(8) As Byte End Type Private Declare Function CoCreateGuid Lib "ole32.dll" (pguid As GUID) As Long Private Declare Function StringFromGUID2 Lib "ole32.dll" (rguid As Any, ByVal lpstrClsId As Long, ByVal cbMax As Long) As Long '取GUID码 '参数: '返回值:STRING,一个GUID码. Public Function GetGUIDCode() As String Dim uGUID As GUID Dim sGUID As String Dim bGUID() As Byte Dim lLen As Long Dim RetVal As Long
lLen = 40 bGUID = String(lLen, 0) CoCreateGuid uGUID '把结构转换为一个可显示的字符串 RetVal = StringFromGUID2(uGUID, VarPtr(bGUID(0)), lLen) sGUID = bGUID If (Asc(Mid$(sGUID, RetVal, 1)) = 0) Then RetVal = RetVal - 1 GetGUIDCode = Left$(sGUID, RetVal) End Function Ok,一个组件就写好了,点击菜单->文件->生成fCom.dll文件 确定,在目录下就会有fCom.dll文件 测试 打开visual interdev6.0,生成一个asp文件 <%@ Language=VBScript %> <HTML> <BODY> <% dim obj set obj=server.CreateObject("fCom.fC8") Response.Write obj.GetGUIDCode() Response.Write "<br>" Response.Write obj.GetGUIDCode() %> </BODY> </HTML> 配置好虚拟目录,在ie中执行此asp文件,得到结果如下: {EF7BF6F9-564C-44D9-91BF-F31695DA6298} 可以多次刷新,可以看到这个值在不断变化. |
|
打印本文 关闭窗口 |