доступ к ресурсу в ACTIVEX DLL со страницы aspx - PullRequest
1 голос
/ 06 апреля 2011

У меня есть ActiveX DLL, которая была написана в VB6.Внутри этого кода он использует LoadResPicture() для загрузки изображения, которое затем отправляет на принтер (используя PaintPicture)

Если я вызываю эту библиотеку DLL с использованием страницы ASPX, которая размещается на компьютере под управлением Windows 2008IIS 7.0, изображение не печатается.

Если я вызову эту DLL-библиотеку с помощью сценария VBS на том же сервере, изображение будет напечатано нормально.

Изображение, используемое для печати в порядке, когда страница 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 ]

1 голос
/ 13 апреля 2011

Ваш сервер 64-битный случайно? Согласно MSDN, версия .Net этой функции поддерживается только в 32-разрядных версиях, поэтому, возможно, то же самое может быть верно и для версии VB6.

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

1 голос
/ 18 апреля 2011

Я нашел подход COM + для VB ActiveX с дурацким IIS. Я надеюсь, что у вас есть контроль над кодом VB6 Dlls, и если это так, попробуйте поместить этот код в класс VB6, который вы пытаетесь создать.

Private moScriptCtx As ScriptingContext

Public Sub OnStartPage(SC As ScriptingContext)

    Set moScriptCtx = SC

End Sub

Теперь вы можете получить доступ к запросу, ответу, серверу и т. Д. В качестве свойств объекта moScriptCtx. ASP автоматически вызывает OnStartPage() для вас во время выполнения CreateObject.

[EDIT]

Это может быть бесполезно в вашем случае, если вы не используете внутренние свойства 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

0 голосов
/ 06 апреля 2011

Это звучит подозрительно, как проблема с разрешениями. Я подозреваю, что ваш сервер Windows 2000 работал под управлением IIS под учетной записью SYSTEM и, вероятно, делал то же самое со старой учетной записью ASPNET рабочего процесса.

Убедитесь, что у учетной записи, под которой работает сайт, есть разрешения на печать. В зависимости от того, как вы защитили сайт, это может быть любой из:

  • Идентификатор пула приложений
  • Конкретный анонимный аккаунт
  • Счет IUSR
...