У меня следующая конфигурация:
CentOS 5.6 final (Linux 2.6.18-238.12.1.el5 #1 SMP Tue May 31 13:22:04 EDT 2011 x86_64)
Apache web server (Apache/2.2.17 (EL), API 20051115)
Mono 2.10.2 (from repository http://ftp.novell.com/pub/mono/download-stable/RHEL_5/
Mono is running via mod_mono.
Я пытаюсь сделать действительно простое приложение asp.net mvc3.Все работало хорошо, пока я не добавил доступ к базе данных MySQL.Я прочитал некоторые документы о кошмаре MySQL, поэтому я использую очень элементарный подход (http://loft7270.serverloft.com/honza/DataAccess.cs).
Я взял MySQL Connector / NET 6.4.4 с сайта mysql.com (.NET & Monoверсия), взял mysql.data.dll (версия .NET4.0), исправил имя файла, чтобы MySql.Data.dll поместил его на сервер и установил в .NET, используя
gacutil /i MySql.Data.dll
. Я проверил установку, используя
gacutil /l
(результирующий список: ссылка -> http://loft7270.serverloft.com/honza/registeredAssemblies.txt)
Независимо от того, что я делаю, я всегда получаю ошибку, когда пытаюсь использовать MySql:
Server Error in '/yelt' Application
The assembly name is invalid.
Description: HTTP 500. Error processing request.
Stack Trace:
System.IO.FileLoadException: The assembly name is invalid.
at System.Reflection.AssemblyName..ctor (string) <0x000af>
at Mono.CSharp.ImportedAssemblyDefinition.ReadAttributes () <0x001e7>
at Mono.CSharp.MetadataImporter.GetAssemblyDefinition (System.Reflection.Assembly) <0x00093>
at Mono.CSharp.ReflectionImporter.ImportAssembly (System.Reflection.Assembly,Mono.CSharp.RootNamespace) <0x0003b>
at Microsoft.CSharp.RuntimeBinder.DynamicContext.Create () <0x00297>
at Microsoft.CSharp.RuntimeBinder.CSharpSetMemberBinder.FallbackSetMember (System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject) <0x00037>
at System.Dynamic.DynamicObject/MetaDynamic/<BindSetMember>c__AnonStorey3B.<>m__4 (System.Dynamic.DynamicMetaObject) <0x0002c>
at System.Dynamic.DynamicObject/MetaDynamic.CallMethodReturnLast (string,System.Dynamic.DynamicMetaObjectBinder,System.Linq.Expressions.Expression[],System.Linq.Expressions.Expression,System.Dynamic.DynamicObject/MetaDynamic/Fallback) <0x00035>
at System.Dynamic.DynamicObject/MetaDynamic.BindSetMember (System.Dynamic.SetMemberBinder,System.Dynamic.DynamicMetaObject) <0x000eb>
at System.Dynamic.SetMemberBinder.Bind (System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[]) <0x000ac>
at System.Dynamic.DynamicMetaObjectBinder.Bind (object[],System.Collections.ObjectModel.ReadOnlyCollection`1<System.Linq.Expressions.ParameterExpression>,System.Linq.Expressions.LabelTarget) <0x001a4>
at System.Runtime.CompilerServices.CallSiteBinder.BindCore<System.Func`4<System.Runtime.CompilerServices.CallSite, object, string, object>> (System.Runtime.CompilerServices.CallSite`1<System.Func`4<System.Runtime.CompilerServices.CallSite, object, string, object>>,object[]) <0x000a1>
at System.Dynamic.UpdateDelegates.UpdateAndExecute2<object, string, object> (System.Runtime.CompilerServices.CallSite,object,string) <0x00417>
at Yelt.Controllers.HomeController.Index () <0x0011d>
at (wrapper dynamic-method) object.lambda_method (System.Runtime.CompilerServices.Closure,System.Web.Mvc.ControllerBase,object[]) <0x00045>
at System.Web.Mvc.ActionMethodDispatcher.Execute (System.Web.Mvc.ControllerBase,object[]) <0x0002d>
at System.Web.Mvc.ReflectedActionDescriptor.Execute (System.Web.Mvc.ControllerContext,System.Collections.Generic.IDictionary`2<string, object>) <0x0012b>
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod (System.Web.Mvc.ControllerContext,System.Web.Mvc.ActionDescriptor,System.Collections.Generic.IDictionary`2<string, object>) <0x00033>
at System.Web.Mvc.ControllerActionInvoker/<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12 () <0x00072>
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter (System.Web.Mvc.IActionFilter,System.Web.Mvc.ActionExecutingContext,System.Func`1<System.Web.Mvc.ActionExecutedContext>) <0x000ed>
Version information: Mono Runtime Version: 2.10.2 (tarball Mon Apr 18 19:06:50 UTC 2011); ASP.NET Version: 4.0.30319.1
Попытка скопировать MySql.Data.dll в папку / bin приводит к другой ошибке:
Server Error in '/yelt' Application
Compilation Error
Description: Error compiling a resource required to service this request. Review your source file and modify it to fix this error.
Compiler Error Message: : at System.Reflection.AssemblyName..ctor (System.String assemblyName) [0x00000] in <filename unknown>:0
~/Global.asax
Show Detailed Compiler Output:
dmcs /target:library /lib:"/var/www/asp.net/yelt/bin" /debug+ /optimize- /warn:4 /out:"/tmp/apache-temp-aspnet-0/165eac4/App_global.asax_4aaabf1a.dll" /r:"/opt/novell/mono/lib/mono/4.0/mscorlib.dll" /r:"/opt/novell/mono/lib/mono/gac/Microsoft.CSharp/4.0.0.0__b03f5f7f11d50a3a/Microsoft.CSharp.dll" /r:"/opt/novell/mono/lib/mono/gac/System/4.0.0.0__b77a5c561934e089/System.dll" /r:"/opt/novell/mono/lib/mono/gac/System.Configuration/4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll" /r:"/opt/novell/mono/lib/mono/gac/System.Web/4.0.0.0__b03f5f7f11d50a3a/System.Web.dll" /r:"/opt/novell/mono/lib/mono/gac/System.Data/4.0.0.0__b77a5c561934e089/System.Data.dll" /r:"/opt/novell/mono/lib/mono/gac/System.Web.Services/4.0.0.0__b03f5f7f11d50a3a/System.Web.Services.dll" /r:"/opt/novell/mono/lib/mono/gac/System.Xml/4.0.0.0__b77a5c561934e089/System.Xml.dll" /r:"/opt/novell/mono/lib/mono/gac/System.Drawing/4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll" /r:"/opt/novell/mono/lib/mono/gac/System.EnterpriseServices/4.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll" /r:"/opt/novell/mono/lib/mono/gac/System.IdentityModel/4.0.0.0__b77a5c561934e089/System.IdentityModel.dll" /r:"/opt/novell/mono/lib/mono/gac/System.Runtime.Serialization/4.0.0.0__b77a5c561934e089/System.Runtime.Serialization.dll" /r:"/opt/novell/mono/lib/mono/gac/System.Xaml/4.0.0.0__b77a5c561934e089/System.Xaml.dll" /r:"/opt/novell/mono/lib/mono/gac/System.ServiceModel/4.0.0.0__b77a5c561934e089/System.ServiceModel.dll" /r:"/opt/novell/mono/lib/mono/gac/System.ServiceModel.Web/4.0.0.0__31bf3856ad364e35/System.ServiceModel.Web.dll" /r:"/opt/novell/mono/lib/mono/gac/System.Core/4.0.0.0__b77a5c561934e089/System.Core.dll" /r:"/opt/novell/mono/lib/mono/gac/System.Web.Extensions/4.0.0.0__31bf3856ad364e35/System.Web.Extensions.dll" /r:"/opt/novell/mono/lib/mono/gac/System.Data.DataSetExtensions/4.0.0.0__b77a5c561934e089/System.Data.DataSetExtensions.dll" /r:"/opt/novell/mono/lib/mono/gac/System.Xml.Linq/4.0.0.0__b77a5c561934e089/System.Xml.Linq.dll" /r:"/opt/novell/mono/lib/mono/gac/System.ComponentModel.DataAnnotations/4.0.0.0__31bf3856ad364e35/System.ComponentModel.DataAnnotations.dll" /r:"/opt/novell/mono/lib/mono/gac/System.Web.DynamicData/4.0.0.0__31bf3856ad364e35/System.Web.DynamicData.dll" /r:"/opt/novell/mono/lib/mono/gac/System.Data.Linq/4.0.0.0__b77a5c561934e089/System.Data.Linq.dll" /r:"/opt/novell/mono/lib/mono/gac/System.Web.ApplicationServices/4.0.0.0__31bf3856ad364e35/System.Web.ApplicationServices.dll" /r:"/opt/novell/mono/lib/mono/gac/System.Web.Abstractions/4.0.0.0__31bf3856ad364e35/System.Web.Abstractions.dll" /r:"/var/www/asp.net/yelt/bin/System.Web.Helpers.dll" /r:"/opt/novell/mono/lib/mono/gac/System.Web.Routing/4.0.0.0__31bf3856ad364e35/System.Web.Routing.dll" /r:"/var/www/asp.net/yelt/bin/System.Web.Mvc.dll" /r:"/var/www/asp.net/yelt/bin/System.Web.WebPages.dll" /r:"/var/www/asp.net/yelt/bin/MySql.Data.dll" /r:"/var/www/asp.net/yelt/bin/NuGet.Core.dll" /r:"/var/www/asp.net/yelt/bin/System.Web.Razor.dll" /r:"/var/www/asp.net/yelt/bin/System.Web.WebPages.Administration.dll" /r:"/var/www/asp.net/yelt/bin/System.Web.WebPages.Deployment.dll" /r:"/var/www/asp.net/yelt/bin/System.Web.WebPages.Razor.dll" /r:"/var/www/asp.net/yelt/bin/WebMatrix.Data.dll" /r:"/var/www/asp.net/yelt/bin/WebMatrix.WebData.dll" /r:"/var/www/asp.net/yelt/bin/Yelt.dll" /nowarn:0169 /d:DEBUG -- "/tmp/apache-temp-aspnet-0/165eac4/App_global.asax_4aaabf1a_0.cs"
Unhandled Exception: System.IO.FileLoadException: The assembly name is invalid.
at System.Reflection.AssemblyName..ctor (System.String assemblyName) [0x00000] in :0
at Mono.CSharp.ImportedAssemblyDefinition.ReadAttributes () [0x00000] in :0
at Mono.CSharp.MetadataImporter.GetAssemblyDefinition (System.Reflection.Assembly assembly) [0x00000] in :0
at Mono.CSharp.ReflectionImporter.ImportAssembly (System.Reflection.Assembly assembly, Mono.CSharp.RootNamespace targetNamespace) [0x00000] in :0
at Mono.CSharp.DynamicLoader.LoadReferences (Mono.CSharp.ModuleContainer module) [0x00000] in :0
at Mono.CSharp.Driver.Compile () [0x00000] in :0
at Mono.CSharp.Driver.Main (System.String[] args) [0x00000] in :0
Version information: Mono Runtime Version: 2.10.2 (tarball Mon Apr 18 19:06:50 UTC 2011); ASP.NET Version: 4.0.30319.1
Я пытался обновить mono до 2.10.8, поскольку, согласно некоторым сетям, MySql.Data просто не будетне работает с 2.10.2 из-за какой-то ошибки, но, к сожалению, ни ссылка -> http://help.tcadmin.com/Mono, ни ссылка -> http://http://www.fcraft.net/wiki/Building_Mono walktrhoughs не привели к работе сайта asp.net (даже с удаленным материалом mysql).
Есть идеи, как заставить работать коннектор MySQL?У меня закончились идеи: - / VS2010 Проект урезан до элементарного контента, вызывающего ошибку: http://loft7270.serverloft.com/honza/Yelt.zip