Я реализовал .NET DLL с видимостью COM (VB.NET):
Public Class Processer Implements IProcesser
Public Sub processASpecificThing(ByVal param As String) _
Implements IProcesser.processAThing
' [...]
End Sub
End Class
Ниже определения интерфейса. По некоторым причинам я представил метод с другим именем в интерфейсе.
Imports System.Runtime.InteropServices
Imports System.ComponentModel
<InterfaceType(ComInterfaceType.InterfaceIsDual)> _
Public Interface IProcesser
Sub processAThing(ByVal param As String)
End Interface
Проект настроен на сборку как видимую COM. Если я правильно понял InterfaceIsDual
, пусть интерфейс будет видимым при раннем связывании, а также при позднем связывании .
В проекте VB6 этот работает :
Dim aProcesser as IProcesser
Set aProcesser = New Processer
aProcesser.processAThing "param" ' Call by the *Interface* method name
В проекте VB6 или ASP классической странице VBScript этот завершается с ошибкой :
Dim aProcesser
Set aProcesser = CreateObject("ProcessLib.Processer")
' Call by the *Interface* method name
aProcesser.processAThing "param" ' [FAIL]
' Call by the *Interface* method name
aProcesser.processASpecificThing "param" ' [SUCCESS]
Ошибка строки приводит к сообщению об ошибке:
Объект не поддерживает это свойство или метод
Реальный контекст этого вопроса - классическая страница ASP. Я использую позднюю привязку, чтобы избежать добавления заголовка METADATA
в файл ASP (я считаю, что это единственный способ, но еще не проверен).
Похоже, интерфейс недоступен. Почему возникает эта проблема и как я могу сделать интерфейс доступным?