Веб-служба ASMX аварийно завершает работу при использовании vb6 .dll - PullRequest
0 голосов
/ 28 декабря 2011

У меня возникла новая проблема при использовании vb6 dll в моих веб-сервисах.При использовании dll экземпляр объекта создается нормально, но когда я начинаю вызывать его метод из моего сервиса, я получаю следующее исключение:

Серверу не удалось обработать запрос.---> Невозможно привести объект COM типа 'WS_Resevat_DLL.WS_ResevatCLClass' к типу интерфейса 'WS_Resevat_DLL._WS_ResevatCL'.Эта операция завершилась неудачно, поскольку вызов QueryInterface для компонента COM для интерфейса с IID '{69F1DA59-56D1-47CE-94A4-D681ABECDF80}' завершился неудачно из-за следующей ошибки: такой интерфейс не поддерживается (Исключение из HRESULT: 0x80004002 (E_NOINTERFACE)).

Вся система работает нормально, когда я тестирую ее на своем компьютере IIS (у меня Windows 7 с IIS 7).Проблема начинается, когда я публикую его на сервере (Windows Server 2003 с IIS 6).Я использую веб-сервисы asp.net 3.5 с SOAP 1.1.VB dll из третьей части, и я, к сожалению, не могу отладить его (единственное, что я проверил с помощью dll creator, это то, что двоичная совместимость включена, я вообще не знаю VB), но когда он работает вне службы (на Win Server 2003) работает нормально.

Некоторые пояснения по поводу типов (WS_ResevatCLClass и WS_ResevatCL).В происхождении dll имеет только один тип: WS_ResevatCl.Но когда я смотрю на dll в проводнике компонентов в Visual Studio, я вижу странные вещи - есть класс с именем WS_ReservatCLClass и 4 различных интерфейса: _WS_ResevatCL, WS_ResevatCL, WS_ResevarCL_v0 и WS ResevatCL_v1.И самое странное, что я могу создать экземпляр одного из них (WS_ResevatCL), и он будет работать точно так же, как экземпляр класса.

Существуют ли какие-либо существенные различия между Win7 и WinServer2003, которые могут вызвать сбой при такомисключение?

...