Поглощение Результат функции .NET Возвращение объекта для класса в Classic ASP - PullRequest
2 голосов
/ 19 июля 2011

У меня есть такая функция в .NET

Public Class P
    Public Function GetObjectForMyClass(ByVal _MyClass As MyClass) As MyClass
        _MyClass.Name="Mahi New"
        Return _MyClass
    End Function
End Class

Теперь у нас есть следующая классическая страница ASP:

<%
Dim P
Dim MyClass 
Set P = Server.CreateObject("Project.Assembly.Namespace.P")
Set MyClass = Server.CreateObject("Project.Assembly.Namespace.MyClass")
MyClass.Name="Mahi"

MyClass= P.GetObjectForMyClass(MyClass)
...
...
...
%>

эта ошибка дает вот так:

Ошибка выполнения Microsoft VBScript '800a0005'

Недопустимый вызов процедуры или аргумент: 'GetObjectForMyClass'

1 Ответ

0 голосов
/ 19 июля 2011

Предоставляете ли вы COM-интерфейс в библиотеке?

Если нет, чтобы представить COM-интерфейс из библиотеки типов .NET, чтобы его можно было вызывать с классической страницы ASP, нам нужно:

  1. Убедитесь, что GUID сборки назначен, например: [assembly: Guid("dde7717b-2b75-4972-a4eb-b3d040c0a182")]

  2. Убедитесь, что атрибут COMVisible имеет значение True - [assembly: ComVisible(true)]

  3. Проверьте опцию проекта «Зарегистрироваться для COM-взаимодействия»

  4. Поместите атрибут GUID в класс, например [GuidAttribute ("4df74b15-d531-4217-af7e-56972e393904")]

  5. Убедитесь, что в вашем коде есть объявление пространства имен: using System.Runtime.InteropServices;

  6. Зарегистрируйтесь с помощью Regasm.exe

РЕДАКТИРОВАТЬ Учитывая, что вы открыли интерфейс COM, пробовали ли вы следующее (используя set):

set MyClass= P.GetObjectForMyClass(MyClass)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...