我正在尝试在一个简单的 ASP.NET Web 服务中使用 sqlite 提供程序来尝试 DBLinq。我也在使用 MonoDevelop 2.4 和 Mono 2.6.7,monodevelop 中的项目引用了默认设置为本地副本的 DbLinq.dll。我可以很好地编译网络服务。当我尝试从 Monodevelop 运行它或从命令行使用 xsp2 时,xsp2 失败并出现许多错误(见下文)。如果我取消选中 DBLinq.dll 引用的本地副本,xsp2 将执行,但代码的 Linq 部分不起作用。对于 MySQL 提供程序也是如此。我认为问题在于当 DbLinq 被引用并被本地复制时,它也会复制依赖程序集,并且其中一个程序集导致 xsp2 阻塞。
有没有人遇到过这个?我该如何解决问题或解决方法是什么?很感谢任何形式的帮助。下面是后面 asmx 代码中 webservice 方法的示例片段。
[WebMethod]
公共字符串 getrecord() {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 += "; "; } }
返回.txt;
}
当然,这可能不是实现数据访问的好方法,需要分离关注点。但出于测试目的,这至少应该有效。
这是我在运行 xsp2 时遇到的错误。正如我上面所说,DbLinq 引用并在本地复制的依赖程序集之一导致了这种情况的发生。我的问题是我如何最好地解决这个问题,让它工作?
user@ubuntu:~/Projects/WebService/WebService$ xsp2 --address 127.0.0.1 --port 8889
** (/usr/lib/mono/2.0/xsp2.exe:2566): 警告 **: 程序集 /usr/lib/mono/gac/System 中缺少方法 System.Web.Configuration.WebConfigurationManager::get_AppSettings()。 Web/2.0.0.0_b03f5f7f11d50a3a / System.Web.dll,在程序集/usr/lib/mono/gac/Mono.Web/2.0.0.0_0738eb9f132ed756/Mono.Web.dll中引用
** (/usr/lib/mono/2.0/xsp2.exe:2566): 警告 **: 缺少方法 System.Configuration.ConfigurationProperty::.ctor(string,Type,object,TypeConverter,ConfigurationValidatorBase,ConfigurationPropertyOptions) 在程序集/ home/ellory/Projects/WebService/WebService/bin/System.Configuration.dll,在程序集中引用/usr/lib/mono/gac/System.Web/2.0.0.0__b03f5f7f11d50a3a/System.Web.dll
** (/usr/lib/mono/2.0/xsp2.exe:2566): 警告 **: 缺少方法 System.Configuration.ConfigurationProperty::.ctor(string,Type,object,TypeConverter,ConfigurationValidatorBase,ConfigurationPropertyOptions) 在程序集/ home/ellory/Projects/WebService/WebService/bin/System.Configuration.dll,在程序集中引用/usr/lib/mono/gac/System.Web/2.0.0.0__b03f5f7f11d50a3a/System.Web.dll
** (/usr/lib/mono/2.0/xsp2.exe:2566): 警告 **: 缺少方法 System.Configuration.ConfigurationProperty::.ctor(string,Type,object,TypeConverter,ConfigurationValidatorBase,ConfigurationPropertyOptions) 在程序集/ home/ellory/Projects/WebService/WebService/bin/System.Configuration.dll,在程序集中引用/usr/lib/mono/gac/System.Web/2.0.0.0__b03f5f7f11d50a3a/System.Web.dll
** (/usr/lib/mono/2.0/xsp2.exe:2566): 警告 **: 缺少方法 System.Configuration.ConfigurationProperty::.ctor(string,Type,object,TypeConverter,ConfigurationValidatorBase,ConfigurationPropertyOptions) 在程序集/ home/ellory/Projects/WebService/WebService/bin/System.Configuration.dll,在程序集中引用 /usr/lib/mono/gac/System.Web/2.0.0.0__b03f5f7f11d50a3a/System.Web.dll 处理异常类型 TargetInvocationException 消息是调用的目标已引发异常。IsTerminating 设置为 True System.Reflection.TargetInvocationException:调用目标已引发异常。
服务器堆栈跟踪:在 System.Reflection.MonoCMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] 参数, System.Globalization.CultureInfo 文化) [0x00000] in :0 在 System .Reflection.MonoCMethod.Invoke (BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] 参数, System.Globalization.CultureInfoculture) [0x00000] in :0 at System.Reflection.ConstructorInfo.Invoke (System.Object[ ] 参数) [0x00000] in :0 at System.Activator.CreateInstance (System.Type type, Boolean nonPublic) [0x00000] in :0 at System.Configuration.ConfigInfo.CreateInstance () [0x00000] in :0 at System.Configuration .SectionInfo.CreateInstance () [0x00000] in :0 在 System.Configuration.Configuration.GetSectionInstance (System.Configuration.SectionInfo 配置,Boolean createDefaultInstance) [0x00000] in :0 at System.Configuration.ConfigurationSectionCollection.get_Item (System.String name) [0x00000] in :0 at System.Configuration.Configuration.GetSection (System.String path) [0x00000] in :0 at System.Web.Configuration.WebConfigurationManager.GetSection (System.String sectionName, System.String path, System.Web.HttpContext context) [0x00000] in :0 at System.Web.Configuration.WebConfigurationManager.GetSection (System.String sectionName, System .String 路径)[0x00000] 在:0 在 System.Web.Configuration.WebConfigurationManager.GetWebApplicationSection(System.String sectionName)[0x00000] 在:0 在 System.Web.Hosting.ApplicationHost.SetHostingEnvironment () [0x00000] 在:0在 System.AppDomain.DoCallBack (System.CrossAppDomainDelegate callBackDelegate) [0x00000] 中:0 at (wrapper remoting-invoke-with-check) System.AppDomain:DoCallBack (System.CrossAppDomainDelegate) at (wrapper xdomain-dispatch) System.AppDomain:DoCallBack (object,byte[]&,byte[]&)
[0] 处重新抛出异常:---> System.TypeInitializationException:System.Web.Configuration.HostingEnvironmentSection 的类型初始化程序引发了异常---> System.MissingMethodException:找不到方法:'System.Configuration.ConfigurationProperty。 .ctor'。--- 内部异常堆栈跟踪结束 --- 在 System.Reflection.MonoCMethod.Invoke (System.Reflection.MonoCMethod.Invoke (object,object[],System.Exception&) 处 (wrapper managed-to-native) System.Reflection.MonoCMethod:InternalInvoke (object,object[],System.Exception&)对象 obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] 参数, System.Globalization.CultureInfoculture) [0x00000] in :0 --- End of internal exception stack trace --- at (wrapper xdomain-调用)System.AppDomain:DoCallBack(系统。