COM Interop (как передать массив в com) через классический ASP - PullRequest
6 голосов
/ 31 августа 2009

Мне нужно создать объект com для моего классического asp, так как я могу создать сборку .net и получить его «взаимодействие» с com, поэтому я приступил к созданию сборки .net следующим образом: -

using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;
using System.Web;


namespace LMS
{

[ComVisible(true)]
public class Calc
{

    public int Add(int val1, int val2, out string[] outputz)
    {
        int total = val1 + val2;
        outputz = new string[5];
        outputz[1] = "test2";
        outputz[2] = "test3";
        outputz[3] = "test4";
        outputz[4] = "test5";
        return total;
    }


}
}

Далее я сделал обычное, собрал, запустил: gacutil & RegAsm

и на моей классической странице asp у меня было это: -

Dim params  
dim objPassport3
set objPassport3 = Server.CreateObject("LMS.Calc")
comTest2 = objPassport3.Add(1,1,params)

и я получаю ошибку:

Тип ошибки: Среда выполнения Microsoft VBScript (0x800A0005) Недопустимый вызов процедуры или аргумент: «Добавить» /eduservice/test.asp, строка 25

Но если я изменяю сборку, чтобы не использовать массив, все это просто работает, я даже могу отправить обычную строку или int в и из сборки в классический asp. Я прочитал так много вещей, но я получаю ту же ошибку,

кто-нибудь пробовал это раньше и был успешным, пожалуйста, поделитесь своим решением

спасибо

1 Ответ

10 голосов
/ 31 августа 2009

ASP может обрабатывать только вариативные массивы, а не массивы строк или целых. Поэтому попробуйте вместо этого использовать объект, например,

public int Add(int val1, int val2, out object outputz)
{
    int total = val1 + val2;
    outputz = new object[5]
      {
          "test1",
          "test2",
          "test3",
          "test4",
          "test5"
      };

    return total;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...