从aspx页面访问ACTIVEX DLL中的资源

时间:2011-04-06 15:35:38

标签: asp.net iis vb6 activex

我有一个用vb6编写的activeX dll。在该代码中,它使用LoadResPicture()加载图像,然后将其发送到打印机(使用PaintPicture

如果我使用ASPX页面调用此DLL,该页面托管在运行IIS 7.0的Windows 2008盒子上,则不会打印图像。

如果我在同一台服务器上使用VBS脚本调用此DLL,则图像打印正常。

当aspx页面托管在Windows 2000 Server上时用于打印的图像。

以下是VBS代码:

Dim CheckCtl
set CheckCtl = CreateObject("CHECKCONTROL.CHECK")

CheckCtl.FBOAccountID = 2765
CheckCtl.includesignature = True
CheckCtl.Amount = 500.00
CheckCtl.CheckDate = #04/06/2011#
CheckCtl.Payee_L1 = "Donald Trump"
CheckCtl.Payee_L2 = "10 Park Place"
CheckCtl.Payee_L3 = "Atlantic City, NJ 00011"
CheckCtl.Payee_L4 = ""
CheckCtl.Notes = "This is a test check"
CheckCtl.SubmittedBy = "Accountant"

dim lSuccess
lSuccess = CheckCtl.Printcheck()

这是ASPX VB.NET代码:

Dim CheckCtl As checkcontrolNET.Check
CheckCtl = New checkcontrolNET.Check
CheckCtl.FBOAccountId = 2765
CheckCtl.IncludeSignature = True
CheckCtl.Amount = 500.0
CheckCtl.CheckDate = "04/06/2011"
CheckCtl.Payee_L1 = "Donald Trump"
CheckCtl.Payee_L2 = "10 Park Place"
CheckCtl.Payee_L3 = "Atlantic City, NJ 00011"
CheckCtl.Payee_L4 = ""
CheckCtl.notes = "This is a test check"
CheckCtl.SubmittedBy = "Accountant"

Dim lSuccess As Boolean
lSuccess = CheckCtl.printcheck()
Response.Write(lSuccess)

我错过了什么?

3 个答案:

答案 0 :(得分:1)

您的服务器是64位吗?根据MSDN,该功能的.Net版本仅支持32位版本,因此对于VB6版本可能也是如此。

http://msdn.microsoft.com/en-us/library/ms652936.aspx

答案 1 :(得分:1)

我找到了用于VB ActiveX的COM +方法,IIS很古怪。我希望你能控制VB6 Dlls代码,如果有的话,试着把这段代码放到你试图实例化的VB6类中。

Private moScriptCtx As ScriptingContext

Public Sub OnStartPage(SC As ScriptingContext)

    Set moScriptCtx = SC

End Sub

您现在可以访问请求,响应,服务器等作为moScriptCtx对象的属性。在CreateObject执行期间,ASP会自动为您调用OnStartPage()

[编辑]

如果您不使用ASP的内在属性,但在COM +管理控制台上尝试启用它,这可能对您的情况没有用。

Fire up the COM+ management consoleo    
Find the COM+ Application in questiono    
Find the applicable component in the 'Components' folder
Right click on it and choose properties
Select the Advanced tab
Check the 'Allow IIS Intrinsic Properties' checkbox

http://blogs.msdn.com/b/distributedservices/archive/2010/04/28/iis-intrinsic-properties-are-disabled-by-default-on-windows-2008-and-windows-2008-r2.aspx

答案 2 :(得分:0)

这听起来像是权限问题。我怀疑您的Windows 2000服务器在SYSTEM帐户下运行IIS,并且可能对旧的ASPNET工作进程帐户执行相同操作。

检查运行该网站的帐户是否具有打印权限。根据您保护网站的方式,这可能是以下任何一个:

  • 应用程序池标识
  • 特定的匿名帐户
  • IUSR帐户