Отказ от ответственности: я совершенно не разбираюсь в .net и COM.
У меня есть приложение вендора, которое, кажется, написано в .net, и я пытаюсь обернуть его веб-формой (скрипт Perl cgi-bin), чтобы я мог в конечном итоге запустить приложение этого вендора с отдельного компьютера. Я работаю в системе Windows Server 2003 R2 SE SP1 и использую Apache 2.2 для веб-сервера и ActivePerl 5.10.0.1004 для скрипта cgi. Мой скрипт cgi вызывает приложение вендора, которое находится на той же машине, с помощью оператора обратной связи Perl.
...
$result = "Result: " . `$vendorsPath/$vendorsExecutable $arg1 $arg2`;
...
Сейчас я просто запускаю веб-браузер IE локально на сервере и получаю доступ "http://localhost/cgi-bin/myPerlScript.pl".. Приложение производителя не работает и регистрирует отладочное сообщение, которое включает в себя следующую трассировку стека (я изменил пару имен, чтобы не выдавать личность продавца):
...
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Runtime.InteropServices.COMException (0x80043A1D): 0x80040154 - Class not registered
--- End of inner exception stack trace ---
at System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters)
at System.RuntimeType.InvokeMember(String name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParameters)
at VendorsTool.Engine.Core.VendorsEngine.LoadVendorsServices(String fileName, String& projectCommPath)
...
Когда я запускаю приложение vendors из командной строки Windows на сервере с теми же аргументами, которые передает скрипт cgi, он работает просто отлично, поэтому есть что-то в вызове их приложения через веб-скрипт, что вызывает проблему , Эта проблема, скорее всего, связана с безопасностью, потому что все это прекрасно работает на компьютере с Windows XP Pro (как из командной строки, так и из Интернета). Я фактически разработал там свой веб-скрипт и полностью его заработал, прежде чем пытался перенести его на компьютер с Windows Server 2003. Так что же отличает компьютер с Windows Server 2003, который не позволяет приложению .net поставщика успешно выполняться сценарием web cgi?
Могу ли я как-то решить эту проблему, чтобы она работала на моем сервере, или поставщику придется внести изменения в свое приложение .net и отправить новую версию? Я, наверное, единственный человек в мире, который пытается запустить приложение этого поставщика из отдельной программы, поэтому я не хочу беспокоить поставщика этим вопросом, если есть обходной путь, который я могу реализовать здесь на моей серверной машине. Кроме того, я спешу и не хочу ждать от 4 до 6 месяцев, пока поставщик исправит и развернет новую версию.
Спасибо за любой совет, который вы можете дать.