Вызов неуправляемого кода из ASP.NET в IIS7 - PullRequest
0 голосов
/ 21 сентября 2010

Я называю DLL в ASP.NET DLL, написанной на C ++.При запуске его в IIS 7 происходит сбой пула (w3wp.exe) и открывается окно «Отладка вовремя».

Я выполняю много трассировок и обнаружил, что сбой происходит при вызове любой функции (в неуправляемойDLL), которые имеют параметр «out string» (или возвращают строковое значение).

Я видел в Интернете, что у многих людей возникает эта проблема с их DLL (C, Delphi, VB6).Но нет ответа.поэтому я вызываю экспертов!

Как я могу вызвать эти функции, чтобы IIS 7 обрабатывал их без ошибок?

cas sakal

Ответы [ 2 ]

1 голос
/ 21 сентября 2010

Вы должны использовать StringBuilder для выходных параметров строки взаимодействия:

  [MarshalAs(UnmanagedType.LPStr)] StringBuilder myString
0 голосов
/ 21 сентября 2010

Это может быть невозможно. COM предоставляет спецификацию интерфейса, но не гарантирует, что вызывающая сторона сможет правильно использовать интерфейс. Если объект COM не предоставляет методы, которые автоматически маршалируются подсистемой COM (например, совместимы с автоматизацией), вы не сможете их использовать. Можно легко написать COM-объект C ++, к которому нельзя напрямую получить доступ вне процесса или с помощью любого языка, кроме C ++.

Возможно, вам удастся написать собственный маршалинг-код, чтобы он работал, но я не думаю, что он будет работать напрямую. Если типы достаточно простые / прямые, могут быть некоторые встроенные маршальные атрибуты, чтобы заставить его работать; Однако я не очень разбираюсь в этой области, так что, надеюсь, другие люди могут помочь.

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