I have a windows app. written in VB6, now we need to expose some of
its classes through a web service.
I am only able to expose the classes using late binding becasue that's
the way the original VB6 was written. I ahve already exposed some of
the original classes, and they work fine. Now, I added a new ActiveX
component to the windows app (in vb6). I am able to call it by late
binding from within the vb6 app. itself, and from a dummy vbs file
(visual basic script), but it crashes when I tried to call it from a
simple <WebMethod> in VB.NET:
<WebMethod()> Public Function PostPaymentToServer(ByVal
TCMPaymentTransactionID As Long) _
As PostPayment
Dim obj As Object
'Dim objPost As New TCMPostPayments.clsPostPaymentBDS
Dim blnRet As Boolean
Dim objRes As New PostPayment
blnRet = False
Try
obj = CreateObject("TCPostPayment.clsPostPaymentBDS")
blnRet = obj.AcceptPayment(TCMPaymentTransactionID)
'blnRet = objPost.AcceptPayment(TCMPaymentTransactionID)
If blnRet = True Then
objRes.ErrorString = ""
Else
objRes.ErrorString = obj.ErrorMessage
End If
Catch ex As Exception
objRes.ErrorString = "Error: " + ex.ToString
Finally
obj = Nothing
End Try
Return objRes
End Function
I get this:
Error: System.Exception: Cannot create ActiveX component. at
Microsoft.VisualBasic.Interaction.CreateObject(String ProgId, String
ServerName) at TaxCollectionWS_BS.WebService.PostPaymentToServer(Int64
TCMPaymentTransactionID) in
C:\TaxCollectionWeb\TaxCollectionWS\TaxCollectionWS_BS\WebService.vb:line
251
any ideas why?
line 251 is the CreateObject line, from there it goes straight to
Catch ex.
The point is: I can use late binding call on this COM object from
another VB6 app, from a VBS script, but not from my web service app.
Laila F - 27 Aug 2004 11:37 GMT
I have exactly the same problem with my C# web service, which is attempting
to create an ActiveX-component. When I try to call it from within C# as an
ordinary application, it works fine, but when I invoke the web method from
another application, it crashes. I get a
System.Runtime.InteropServices.COMException. I have a catch-clause which
catches the COM-exception when called from within the application, but for
some reason it seems to ignore this when called from another application.
That said, there is no reason why the exception should be thrown in the first
place, as I provide the correct information to the method. I deliberately
sent it null-values from within the application just to test the
catch-clause, which then worked fine.
Did you find out why this happened? Or perhaps a work-around? I would be
very happy to hear from you if you did.
> I have a windows app. written in VB6, now we need to expose some of
> its classes through a web service.
[quoted text clipped - 49 lines]
> The point is: I can use late binding call on this COM object from
> another VB6 app, from a VBS script, but not from my web service app.