4

私はApacheでmod-monoを使用してServiceStackWebサービスをホストしています。私は、mono-3.0.0、およびxsp-2.10.2を使用しています。.Net Framework 2.0をターゲットとし、mod-mono-server2を使用してhello worldの例をホストしましたが、正常に機能しました。次に、プロジェクトを変更して.Net Framework 4.0をターゲットにし、mod-mono-server4を使用します。このエラーが発生します:

ファイルまたはアセンブリ'System.Web.Extensions、Version = 4.0.0.0、Culture = neutral、PublicKeyToken=31bf3856ad364e35'またはその依存関係の1つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。

System.IO.FileNotFoundException:ファイルまたはアセンブリ'System.Web.Extensions、Version = 4.0.0.0、Culture = neutral、PublicKeyToken=31bf3856ad364e35'またはその依存関係の1つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。ファイル名:'System.Web.Extensions、Version = 4.0.0.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35' at System.AppDomain.Load(System.String assemblyString、System.Security.Policy.Evidence assemblySecurity、Boolean refonly)[0x00000] in:0 at System.AppDomain.Load(System.String assemblyString)[0x00000] in:0 at(ラッパーremoting-invoke-with-check)System.AppDomain:Load(string)at System.Reflection.Assembly.Load(System.String assemblyString)[0x00000] in:0 at System.Web.Compilation.BuildManager.LoadAssembly(System。 Web.Configuration.AssemblyInfo info、System.Collections.Generic.List`1 al)[0x00000] in:0 at System.Web.Compilation.BuildManager.GetReferencedAssemblies()[0x00000] in:0 at System.Web.Compilation.BuildManager .CallPreStartMethods()[0x00000] in:0

ただし、ファイルSystem.Web.ExtensionsはGACにインストールされています。

gacutil -l System.Web.Extensions

次のアセンブリがGACにインストールされます:System.Web.Extensions、Version = 1.0.61025.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35 System.Web.Extensions、Version = 3.5.0.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35 System.Web .Extensions、Version = 4.0.0.0、Culture = neutral、PublicKeyToken=31bf3856ad364e35 アイテム数=3

特に4.0バージョンを取得するようにMonoPathを設定した場合でも、同じエラーが発生します。

MonoPath /usr/local/lib/mono/4.0

私もこれに気づきました:

バージョン情報:Mono Runtimeバージョン:2.10.5(tarball Fri Oct 28 10:20:24 IST 2011); ASP.NETバージョン:4.0.30319.1

モノランタイムバージョンは2.10.5と言っていますが、mono-3.0.0をインストールしていますが、この情報がこの問題に価値があるかどうかはわかりません。

mod-mono-server4を直接実行しようとすると、次のエラーメッセージが表示されます。

mod-mono-server4

mod-mono-server4アセンブリ/usr/local/lib/mono/4.0/System.dllにメソッドSystem.Configuration.IConfigurationSectionHandler::Create(object、object、XmlNode)がありません。アセンブリ/usr/local/lib/monoで参照されています/4.0/System.Configuration.dll構成ファイルの読み取り中に例外がキャッチされました:System.MissingMethodException:メソッドが見つかりません:'System.Configuration.IConfigurationSectionHandler.Create'。at System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection(System.String configKey)[0x00000] in:0 at System.Configuration.ConfigurationManager.GetSection(System.String sectionName)[0x00000] in:0 at System .Configuration.ConfigurationManager.get_AppSettings()[0x00000] in:0 at Mono.WebServer.Apache.Server.get_AppSettings()[0x00000] in:0atMono.WebServer.Apache。

私はこのエラーをグーグルで検索しましたが、このバグが発生しました。

https://bugzilla.xamarin.com/show_bug.cgi?id=7967

mod-mono-server4のエラーが他のバグの原因かもしれません...xsp3.0を入手して、問題が解決するかどうかを確認します。

何か案は?

ありがとう

4

1 に答える 1

5

このエラーは、Mod_Mono / XSP で使用された場合に、Mono の.NET 4.0 フレームワークの実装に対する System.Configuration アセンブリの問題が原因で発生します。" MonoServerDefaultIndexFiles " appSetting キーを読み込もうとしていますが、Create factory メソッドが見つかりません。

解決策が次のファイルを編集することであることがわかるまでに1日か2日かかりました...

/opt/mono/bin/mod-mono-server4

...次の行でデフォルト値の4.04.5に変更します。

exec /opt/mono/bin/mono $MONO_OPTIONS "/opt/mono/lib/mono/ 4.5 /mod-mono-server4.exe" "$@"

これが解決されたので、私が直面した次の問題は、Mono が組み込みの AspNetMembershipProvider を、Settings Map 機能を介して SqliteMembershipProvider に置き換えるという事実でした。この既定の動作を無効にするために、Web.config の appSettings セクションに次の行を追加しました。

"<add key="MonoAspnetInhibitSettingsMap" value="disabled"/>"

数日間追跡した後、私の MVC3 アプリは Mono 3.0.3 (この記事の執筆時点で最新のもの) / XSP 2.10 / Mod_Mono 2.10 で正常に実行されました。

于 2013-02-15T21:01:51.573 に答える