Настройка сайта MVC3 на mod-mono, теперь получаются исключения при выполнении кода

Давайте посмотрим, может ли кто-нибудь здесь помочь с проблемой развертывания сайта MVC3 на apache с использованием mod_mono.

Моя моно-установка - 3.10.1 (точно так же происходит и с 3.10.0), последняя версия - mod_mono и xsp. Я установил моно из источника, который я получил из ветки git.

Проблема - исключение, которое я получаю при попытке аутентификации пользователя. Исключение происходит, когда я звоню Membership.Validate и это:

System.InvalidOperationException
Failed to map path '/'

 at System.Web.HttpRequest.MapPath (System.String virtualPath, System.String baseVirtualDir, Boolean allowCrossAppMapping) [0x001a4] in /usr/local/src/mono/mcs/class/System.Web/System.Web/HttpRequest.cs:1563 
  at System.Web.HttpRequest.MapPath (System.String virtualPath) [0x0000d] in /usr/local/src/mono/mcs/class/System.Web/System.Web/HttpRequest.cs:1520 
  at System.Web.Hosting.HostingEnvironment.MapPath (System.String virtualPath) [0x00042] in /usr/local/src/mono/mcs/class/System.Web/System.Web.Hosting/HostingEnvironment.cs:156 
  at System.Web.Hosting.DefaultVirtualPathProvider.DirectoryExists (System.String virtualDir) [0x00016] in /usr/local/src/mono/mcs/class/System.Web/System.Web.Hosting/DefaultVirtualPathProvider.cs:59 
  at System.Web.Configuration.WebConfigurationManager.FindWebConfig (System.String path, System.Boolean& inAnotherApp) [0x0001a] in /usr/local/src/mono/mcs/class/System.Web/System.Web.Configuration_2.0/WebConfigurationManager.cs:592 
  at System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration (System.String path, System.String site, System.String locationSubPath, System.String server, System.String userName, System.String password, Boolean fweb) [0x00026] in /usr/local/src/mono/mcs/class/System.Web/System.Web.Configuration_2.0/WebConfigurationManager.cs:360 
  at System.Web.Configuration.WebConfigurationManager.GetSection (System.String sectionName, System.String path, System.Web.HttpContext context) [0x0000d] in /usr/local/src/mono/mcs/class/System.Web/System.Web.Configuration_2.0/WebConfigurationManager.cs:456 
  at System.Web.Configuration.WebConfigurationManager.GetSection (System.String sectionName, System.String path) [0x00000] in /usr/local/src/mono/mcs/class/System.Web/System.Web.Configuration_2.0/WebConfigurationManager.cs:435 
  at System.Web.Security.SqliteMembershipProvider.Initialize (System.String name, System.Collections.Specialized.NameValueCollection config) [0x0028b] in /usr/local/src/mono/mcs/class/System.Web/System.Web.Security/SqliteMembershipProvider.cs:143 
  at System.Web.Configuration.ProvidersHelper.InstantiateProvider (System.Configuration.ProviderSettings providerSettings, System.Type providerType) [0x00069] in /usr/local/src/mono/mcs/class/System.Web/System.Web.Configuration_2.0/ProvidersHelper.cs:61 
  at System.Web.Configuration.ProvidersHelper.InstantiateProviders (System.Configuration.ProviderSettingsCollection configProviders, System.Configuration.Provider.ProviderCollection providers, System.Type providerType) [0x0003e] in /usr/local/src/mono/mcs/class/System.Web/System.Web.Configuration_2.0/ProvidersHelper.cs:72 
  at System.Web.Security.Membership..cctor () [0x0001a] in /usr/local/src/mono/mcs/class/System.Web/System.Web.Security/Membership.cs:107

Я пробовал сайт, который использует пользовательский поставщик членства, и другой сайт, который использует по умолчанию, оба отображают ту же проблему. Я пробовал это на 2 разных серверах, на моно 3.10.1 и 3.10.0.

Я настроил сайт с помощью инструмента автоматической настройки: http://go-mono.com/config-mod-mono/ и использовал конфигурацию по умолчанию, которую он дал следующим образом:

  Alias /boacommander "/var/www/html/boacommander"
  MonoServerPath boacommander "/usr/bin/mod-mono-server4"
  MonoDebug boacommander true
  MonoSetEnv boacommander MONO_IOMAP=all
  MonoApplications boacommander "/boacommander:/var/www/html/boacommander"
  <Location "/boacommander">
    Allow from all
    Order allow,deny
    MonoSetServerAlias boacommander
    SetHandler mono
    SetOutputFilter DEFLATE
    SetEnvIfNoCase Request_URI "\.(?:gif|jpe?g|png)$" no-gzip dont-vary
  </Location>
  <IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript
  </IfModule>

Следующие dll скопированы вдоль сайта:

  • EntityFramework.dll
  • Microsoft.Web.Infrastructure.dll
  • MVC3.dll
  • System.Web.Helpers.dll
  • System.Web.Mvc.dll
  • System.Web.Razor.dll
  • System.Web.Services.dll
  • System.Web.WebPages.Deployment.dll
  • System.Web.WebPages.dll
  • System.Web.WebPages.Razor.dll

Исключение происходит в System.Web, поэтому, если я скопирую System.Web.dll, я получу это исключение еще до того, как попаду на страницу входа:

Could not find method 'Void SetHostingEnvironment()' in type 'System.Web.Hosting.ApplicationHost'
  at (wrapper xdomain-invoke) System.AppDomain:DoCallBack (System.CrossAppDomainDelegate)
  at (wrapper remoting-invoke-with-check) System.AppDomain:DoCallBack (System.CrossAppDomainDelegate)
  at System.Web.Hosting.ApplicationHost.CreateApplicationHost (System.Type hostType, System.String virtualDir, System.String physicalDir) [0x002fb] in /usr/local/src/mono/mcs/class/System.Web/System.Web.Hosting/ApplicationHost.cs:241
  at Mono.WebServer.VPathToHost.CreateHost (Mono.WebServer.ApplicationServer server, Mono.WebServer.WebSource webSource) [0x00048] in /usr/local/src/xsp/src/Mono.WebServer/VPathToHost.cs:143
  at Mono.WebServer.Apache.Server.RealMain (System.String[] args, Boolean root, IApplicationHost ext_apphost, Boolean v_quiet) [0x00277] in /usr/local/src/xsp/src/Mono.WebServer.Apache/main.cs:161
  at (wrapper remoting-invoke-with-check) Mono.WebServer.Apache.Server:RealMain (string[],bool,Mono.WebServer.IApplicationHost,bool)
  at Mono.WebServer.Apache.Server.Main (System.String[] args) [0x00034] in /usr/local/src/xsp/src/Mono.WebServer.Apache/main.cs:58
[ERROR] FATAL UNHANDLED EXCEPTION: System.Runtime.Serialization.SerializationException: Could not find method 'Void SetHostingEnvironment()' in type 'System.Web.Hosting.ApplicationHost'

Server stack trace:
  at System.Reflection.MemberInfoSerializationHolder.GetRealObject (StreamingContext context) [0x00215] in /usr/local/src/mono/mcs/class/corlib/System.Reflection/MemberInfoSerializationHolder.cs:158
  at System.Runtime.Serialization.ObjectRecord.LoadData (System.Runtime.Serialization.ObjectManager manager, ISurrogateSelector selector, StreamingContext context) [0x00133] in /usr/local/src/mono/mcs/class/corlib/System.Runtime.Serialization/ObjectManager.cs:596
  at System.Runtime.Serialization.ObjectManager.DoFixups () [0x00074] in /usr/local/src/mono/mcs/class/corlib/System.Runtime.Serialization/ObjectManager.cs:85
  at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadNextObject (System.IO.BinaryReader reader) [0x0000f] in /usr/local/src/mono/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/ObjectReader.cs:141
  at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadObjectGraph (BinaryElement elem, System.IO.BinaryReader reader, Boolean readHeaders, System.Object& result, System.Runtime.Remoting.Messaging.Header[]& headers) [0x0004d] in /usr/local/src/mono/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/ObjectReader.cs:107
  at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.NoCheckDeserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler) [0x0007a] in /usr/local/src/mono/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/BinaryFormatter.cs:177
  at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream) [0x00000] in /usr/local/src/mono/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/BinaryFormatter.cs:134
  at System.Runtime.Remoting.RemotingServices.DeserializeCallData (System.Byte[] array) [0x0000f] in /usr/local/src/mono/mcs/class/corlib/System.Runtime.Remoting/RemotingServices.cs:794
  at (wrapper xdomain-dispatch) System.AppDomain:DoCallBack (object,byte[]&,byte[]&)

Будь я проклят, если ты это сделаешь, будь ты проклят, если нет, так что я могу сделать, чтобы решить эту проблему?

РЕДАКТИРОВАТЬ с дополнительной информацией: то же самое происходит при использовании mono 3.12.0 (git branch)

0 ответов

Другие вопросы по тегам