Развертывание веб-службы в: Mono 500 - внутренняя ошибка сервера - PullRequest
0 голосов
/ 04 июля 2010

Я разработал веб-сервисы, используя Visual Studio 2008 с C # и C ++.

Я развернул его в mod_mono, службы загружены, но когда я пытаюсь запустить метод с помощью кнопки Invoke, я получаю сообщение об ошибке ниже, я тестировал с MoMA без каких-либо ошибок:

500 - Internal Server Error

System.TypeInitializationException: An exception was thrown by the type initializer for <Module> ---> System.MissingMethodException: Method contains unsupported native code

  at (wrapper managed-to-native) <Module>:<CrtImplementationDetails>.ThrowModuleLoadException (string,System.Exception)

  at <Module>.<CrtImplementationDetails>.LanguageSupport.Initialize (<CrtImplementationDetails>.LanguageSupport* ) [0x00000]

  at <Module>..cctor () [0x00000]

  --- End of inner exception stack trace ---

  at I3WebService.Service1.Inferece (System.String value) [0x00000]

  at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (object,object[],System.Exception&)

  at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000]

Спасибо.

Еще одно сообщение об ошибке, когда я использую php для вызова веб-службы:

(/usr/lib/mono/2.0/mod-mono-server2.exe:1941): WARNING **: Method '<Module>:network.{ctor} (network*)' in assembly '/usr/local/zend/tmp/apache-temp-aspnet-0/54ae108a/assembly/shadow/a7cd17e2/c0c678fa_670b6f18_00000002/engine.dll' contains native code that cannot be executed by Mono on this platform. The assembly was probably created using C++/C

1 Ответ

2 голосов
/ 04 июля 2010

Я думаю, что сообщения об ошибках здесь вполне понятны.

содержит собственный код , который не может быть выполнен Mono на этой платформе. Сборка, вероятно, была создана с использованием C ++ / C

Вы не можете использовать C ++ / CLI на платформе Mono, если этот модуль C ++ / CLI не был скомпилирован на этом Моно платформа. Mono сам по себе не зависит от платформы, но нативный код в вашей сборке - нет.

C ++ / CLI на самом деле является способом смешивания нативного кода с управляемым кодом - среда выполнения обрабатывает все вещи P / Invoke за кулисами, но они все еще там, и вы не можете забыть об этом только потому, что они не отображаются напрямую в язык.

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