tabachanker
Jan 16th, 2008, 04:58 PM
Hi,
I have a peculiar problem with a COM+ DLL developed in Visual Basic 6.0.
The DLL is in a COM+ application. This COM+ application is set as "Server" and has a local NT user as its identity.
When I call a particular method of this DLL from the website, everything works fine. But if I call the same method from another COM+ DLL, I get an error #70 (permission denied).
Now, the only difference between calling the DLL from the website or the COM+ DLL is the caller identity. The website use the anonymous IIS account (IUSR_xxxxx) and the COM+ DLL uses a local NT user (a different one than the identity of the problematic COM+ DLL).
I know where the problem is, but I don't have any idea how to resolve it. The problematic DLL is instantiated correctly and the method is called correctly because some of the code in it is being executed (a trace inside the code proves it). The problem is that I pass an object (a dictionary) to the method and when I try to access any of its properties or methods, I get the permission denied error. There's no problem when I do this from the website (create the dictionary object, put some values in it and pass it to the DLL). I do exactly the same thing in the other COM+ DLL, and I get the error whenever I try to access one of the properties (like .count for instance)
Here's the partial code of the problematic method. The Permission Denied occurs at the "If pdicChampsVar.count <> 0 Then" line.
Public Function strConstruireCourriel(ByVal pstrParagraphes As String, ByVal pdicChampsVar As CDictionary) As String
If objAttribs.length > 0 Then
For j = 0 To objAttribs.length - 1
If pdicChampsVar.count <> 0 Then
....
End If
Next
End If
End Function
The CDictionary object is the Dictionary object provided by the Microsoft application Commerce Server 2000. It functions the same as the Scripting.Dictionary object.
I should probably tell you also that I tried to configure the problematic COM+ application to "library" and so, its identity became the same as the caller's. And it worked! No permission denied on either sides. But I still want to know where this permission denied come from. Because from all I can tell, this is suppose to work with the COM+ "server" configuration.
Thanks you very much for any help you can provide!
Steve Begin
I have a peculiar problem with a COM+ DLL developed in Visual Basic 6.0.
The DLL is in a COM+ application. This COM+ application is set as "Server" and has a local NT user as its identity.
When I call a particular method of this DLL from the website, everything works fine. But if I call the same method from another COM+ DLL, I get an error #70 (permission denied).
Now, the only difference between calling the DLL from the website or the COM+ DLL is the caller identity. The website use the anonymous IIS account (IUSR_xxxxx) and the COM+ DLL uses a local NT user (a different one than the identity of the problematic COM+ DLL).
I know where the problem is, but I don't have any idea how to resolve it. The problematic DLL is instantiated correctly and the method is called correctly because some of the code in it is being executed (a trace inside the code proves it). The problem is that I pass an object (a dictionary) to the method and when I try to access any of its properties or methods, I get the permission denied error. There's no problem when I do this from the website (create the dictionary object, put some values in it and pass it to the DLL). I do exactly the same thing in the other COM+ DLL, and I get the error whenever I try to access one of the properties (like .count for instance)
Here's the partial code of the problematic method. The Permission Denied occurs at the "If pdicChampsVar.count <> 0 Then" line.
Public Function strConstruireCourriel(ByVal pstrParagraphes As String, ByVal pdicChampsVar As CDictionary) As String
If objAttribs.length > 0 Then
For j = 0 To objAttribs.length - 1
If pdicChampsVar.count <> 0 Then
....
End If
Next
End If
End Function
The CDictionary object is the Dictionary object provided by the Microsoft application Commerce Server 2000. It functions the same as the Scripting.Dictionary object.
I should probably tell you also that I tried to configure the problematic COM+ application to "library" and so, its identity became the same as the caller's. And it worked! No permission denied on either sides. But I still want to know where this permission denied come from. Because from all I can tell, this is suppose to work with the COM+ "server" configuration.
Thanks you very much for any help you can provide!
Steve Begin