Видимая сборка COM - метод объекта недоступен через открытый метод интерфейса - PullRequest
2 голосов
/ 10 мая 2019

Я реализовал .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 (я считаю, что это единственный способ, но еще не проверен).

Похоже, интерфейс недоступен. Почему возникает эта проблема и как я могу сделать интерфейс доступным?

...