2010-07-04 3 views
0

J'ai développé un service Web à l'aide de Visual Studio 2008 avec C# et C++.Déploiement du service Web sur: Mono 500 - Erreur de serveur interne

Je deploy à mod_mono, les services sont chargés, mais lorsque je tente d'exécuter une méthode en utilisant le bouton Invoke je reçois l'erreur ci-dessous, je l'ai testé avec MoMA sans aucune erreur:

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] 

Merci .

Un peu plus message d'erreur, lorsque j'utilise php pour appeler le webservice:

(/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 

Répondre

2

Je pense que les messages d'erreur sont beaucoup clair.

contains native code that cannot be executed by Mono on this platform. The assembly was probably created using C++/C

Vous ne pouvez pas utiliser C++/CLI sur la plate-forme Mono, à moins que le module C++/CLI a été compilé sur cette plate-forme Mono. Mono lui-même est indépendant de la plateforme, mais le code natif de votre assembly ne l'est pas. C++/CLI est en fait un moyen de mélanger du code natif avec du code managé - le runtime gère tous les trucs P/Invoke dans les coulisses mais il est toujours là et vous ne pouvez pas l'oublier juste parce qu'il n'est pas directement exposé dans la langue.

Questions connexes