2010-10-11 23 views
2

J'essaie d'essayer DBLinq avec le fournisseur sqlite dans un service Web ASP.NET simple . J'utilise également MonoDevelop 2.4 et Mono 2.6.7, Le projet dans monodevelop fait référence à DbLinq.dll qui est défini par défaut sur Local Copy. Je peux très bien compiler le webservice. Lorsque j'essaie de l'exécuter à partir de Monodevelop ou en utilisant le xsp2 à partir de la ligne de commande, xsp2 échoue avec un certain nombre d'erreurs (voir ci-dessous). Si je décoché le local Copie pour la référence DBLinq.dll, xsp2 s'exécutera mais la partie Linq du code ne fonctionne pas. Ceci est également vrai pour le fournisseur MySQL. Je pense que le problème est le moment où DbLinq est référencé et copié localement, il copie également les assemblages dépendants et l'un des assemblages provoque le blocage de xsp2.Dblinq référence dans le service Web ASP.NET sur MonoDevelop provoque xsp2 à défaut

Quelqu'un at-il rencontré cela? Comment puis-je résoudre le problème ou quelle est la solution de contournement ? Toute aide est fortement appréciée. Ci-dessous est l'exemple extrait de la méthode webservice dans le code asmx derrière.

[WebMethod]
GetRecord public string() {

string txt = string.Empty; 

using(DataContext context = 
    new DataContext("DbLinqProvider=Sqlite; Data Source=openemr.db")) 
    { 
      var addrtbl = context.GetTable<Addresses>(); 
      var addr = from a in addrtbl 
        select a; 
      foreach(var i in addr) 
      { 
        txt += i.City ; 
        txt += "; "; 
      } 
    } 

retour txt;
}

Bien sûr, cela pourrait ne pas être un bon moyen de mettre en œuvre l'accès aux données et devront séparer les préoccupations. Mais à des fins de test, ce devrait au moins fonctionner.

Voici l'erreur que j'obtiens lorsque j'exécute xsp2. Comme je l'ai dit plus haut, l'un des assemblages dépendant que DbLinq référence et copie localement est provoquant cela. Ma question est comment puis-je résoudre ce problème de manière à ce que cela fonctionne?

user @ ubuntu: ~/Projets/WebService/WebService $ xsp2 de 127.0.0.1 --port 8889

** (/usr/lib/mono/2.0/xsp2.exe:2566) : ATTENTION **: méthode manquante System.Web.Configuration.WebConfigurationManager :: get_AppSettings() dans Assemblée /usr/lib/mono/gac/System.Web/2.0.0.0_ b03f5f7f11d50a3a/ System.Web.dll, référencé dans l'assemblage /usr/lib/mono/gac/Mono.Web/ 2.0.0.0 _0738eb9f132ed756/Mono.Web.dll

** (/usr/lib/mono/2.0/xsp 2.exe: 2566): AVERTISSEMENT **: Méthode manquante System.Configuration.ConfigurationProperty ::. Ctor (chaîne, Type, objet, TypeConverter, ConfigurationValidatorBase, ConfigurationPropertyOptions) dans assembly/home/ellory/Projects/WebService/WebService/bin/ System.Configuration.dll, référencé dans l'assemblage/usr/lib/mono/gac/ System.Web/2.0.0.0__b03f5f7f11d50a3a/System.Web.dll

** (/ usr/lib/mono/2.0/xsp2.exe: 2566): AVERTISSEMENT **: Méthode manquante System.Configuration.ConfigurationProperty ::. Ctor (chaîne, Type, objet, TypeConverter, ConfigurationValidatorBase, ConfigurationPropertyOptions) dans assembly/home/ellory/Projects/WebService/WebService/bin/ System.Configuration.dll, référencé dans l'assemblage/usr/lib/mono/gac/ System.Web/2.0.0.0__b03f5f7f11d50a3a/System.Web.dll

** (/usr/lib/mono/2.0/xsp2.exe:2566): AVERTISSEMENT **: Méthode manquante System.Configuration.ConfigurationProperty ::. Ctor (chaîne, Type, objet, TypeConverter, ConfigurationValidatorBase, ConfigurationPropertyOptions) dans assembly/home/ellory/Projects/WebService/WebService/bin/ Système. Configuration.dll, référencé dans l'assemblage/usr/lib/mono/gac/ System.Web/2.0.0.0__b03f5f7f11d50a3a/System.Web.dll

** (/usr/lib/mono/2.0/xsp2.exe : 2566): AVERTISSEMENT **: Méthode manquante System.Confi guration.ConfigurationProperty ::. ctor (chaîne, Type, objet, TypeConverter, ConfigurationValidatorBase, ConfigurationPropertyOptions) dans assembly/home/ellory/Projets/WebService/WebService/bin/ System.Configuration.dll, référencé dans assembly/usr/lib/mono/gac/ System.Web/2.0.0.0__b03f5f7f11d50a3a/System.Web.dll Gestion du type d'exception TargetInvocationException Message is Exception a été lancée par la cible d'un appel. IsTerminating est défini sur True System.Reflection.TargetInvocationException: Exception a été levée par la cible d'un appel.

trace de pile du serveur: à System.Reflection.MonoCMethod.Invoke (System.Object obj, BindingFlags invokeAttr, liant System.Reflection.Binder, System.Object [] paramètres, la culture System.Globalization.CultureInfo) [0x00000] en: 0 à System.Reflection.MonoCMethod.Invoke (BindingFlags invokeAttr, liant System.Reflection.Binder, System.Object [] paramètres, culture System.Globalization.CultureInfo) [0x00000] en: 0 à System.Reflection.ConstructorInfo.Invoke (System.Object [] paramètres) [0x00000] dans: 0 à System.Activator.CreateInstance (System.Type type, Boolea n non publique) [0x00000] en: 0 à System.Configuration.ConfigInfo.CreateInstance() [0x00000] dans : 0 à System.Configuration.SectionInfo.CreateInstance() [0x00000] dans : 0 au système. Configuration.Configuration.GetSectionInstance (config de System.Configuration.SectionInfo, Boolean createDefaultInstance) [0x00000] en: 0 à System.Configuration.ConfigurationSectionCollection.get_Item (nom System.String) [0x00000] en: 0 au système. Configuration.Configuration.GetSection (System.String chemin) [0x00000] dans: 0 à System.Web.Configuration.WebConfigurationManager.GetSection (System.String sectionName, chemin System.String, System.Web.HttpContext contexte) [0x00000] dans: 0 à System.Web.Configuration.WebConfigurationManager.GetSection (System.String sectionName, System.String path) [ 0x00000] en: 0 à System.Web.Configuration.WebConfigurationManager.GetWebApplicationSection (System.String sectionName) [0x00000] en: 0 à System.Web.Hosting.ApplicationHost.SetHostingEnvironment() [0x00000] en: 0 à System.AppDomain.DoCallBack (System.CrossAppDomainDelegate callBackDelegate) [0x00000] en: 0 à (wrapper remoting-invoquer-with-check) System.AppDomain: DoCallBack (System.CrossAppD omainDelegate) at (wrapper xdomain-dispatch) Système.AppDomain: DoCallBack (objet, byte [] &, byte [] &)

Exception relancée à [0]: ---> System.TypeInitializationException: Une exception a été levée par l'initialiseur de type de système. Web.Configuration.HostingEnvironmentSection ---> System.MissingMethodException: Méthode non trouvée: 'System.Configuration.ConfigurationProperty..ctor'. --- Fin de trace de pile d'exception interne --- au (wrapper managé à native) System.Reflection.MonoCMethod: InternalInvoke (objet, l'objet [], System.Exception &) à System.Reflection. MonoCMethod.Invoke (System.Object obj, BindingFlags invokeAttr, liant System.Reflection.Binder, System.Object [] paramètres, la culture System.Globalization.CultureInfo) [0x00000] en: 0 --- Fin d'exception interne trace de pile --- at (wrapper xdomain-invoke) System.AppDomain: DoCallBack (System.CrossAppDomainDelegate) at (wrapper remoting-invoke-with-check) System.AppDomain: DoCallBack.210 (System.CrossAppDomainDelegate) à System.Web.Hosting.ApplicationHost.CreateApplicationHost (System.Type HostType, System.String VirtualDir, System.String physicalDir) [0x00000] en: 0 à Mono.WebServer.VPathToHost.CreateHost (serveur Mono.WebServer.ApplicationServer, Mono.WebServer.WebSource WebSource) [0x00000] en: 0 à Mono.WebServer.XSP.Server.RealMain (System.String [] args, Boolean racine, IApplicationHost ext_apphost, Boolean calme) [0x00000] dans : 0 à (wrapper remoting-invoquer-with-check) Mono.WebServer.XSP.Server: RealMain (string [], bool, Mono.WebServer.IApplicationHost, bool) sur Mono.WebServer.XSP.Server.Main (Arguments System.String []) [0x00000] dans: 0

Répondre

0

DbLinq est le fondement de l'espace de noms LINQ to SQL et System.Data.Linq sur Mono. Vous n'avez donc pas besoin de déployer/référencer les assemblys DbLinq. Oubliez DbLinq lorsque vous utilisez Mono.

La partie LINQ de votre code échoue car le contexte de données n'est pas correctement initialisé.
Vous devriez faire:

var context = new DataContext("DbLinqProvider=Sqlite; DbLinqConnectionType=Mono.Data.Sqlite.SqliteConnection, Mono.Data.Sqlite, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756; Data Source=openemr.db"); 
// or 
var context = new DataContext(new SqliteConnection("DbLinqProvider=Sqlite; Data Source=openemr.db")); 

Voir: http://www.mono-project.com/Release_Notes_Mono_2.6#LINQ_to_SQL