Я использую атрибут страницы aspcompat в ASP.NET, чтобы вызываемые компоненты com могли получить внутренние объекты ASP (Запрос, Ответ, Приложение и т. Д.)
Я быстро создал новый тестовый проект, одну страницу asp.net и компонент vb6 com.
Страница делает это:
for (int i = 0; i < 1000; i++)
Application["string" + i] = i.ToString();
Debug.WriteLine(string.Format("{0} done adding strings to app",Environment.TickCount));
var asp = new ASPTest.CompClass();
asp.SetProcessId();
Обычно я добавляю вещи в объект приложения, а затем вызываю компонент com.
Set context = GetObjectContext
If Not context Is Nothing Then
Set app = context("Application")
Set ses = context("Session")
Set resp = context("Response")
If Not app Is Nothing Then
OutputDebugString "" & GetTickCount & " writing response"
resp.Write "I see application from vb <br/>"
OutputDebugString "" & GetTickCount & " before "
For i = 100 To 200
resp.Write GetTickCount & " i = " & app("string" & i) & "<br/>"
Next
OutputDebugString "" & GetTickCount & " after "
End If
Else
OutputDebugString "No context"
End If
Проблема в том, что чем больше я помещаю в приложение, тем медленнее становится код vb. Не весь код, хотя, только когда я впервые пытаюсь вызвать любой метод на внутренних объектах, в моем примере мой первый вызов resp.Write. Если я добавлю 10000 элементов в приложение, то для завершения записи потребуется десять секунд, а 60000 => timeout.
Кажется, что когда я впервые прикасаюсь к любому внутреннему объекту, среда выполнения делает что-то неприятное, чтобы сделать объекты доступными для COM.
Вы когда-нибудь видели это? Любое предложение высоко ценится.