読者です 読者をやめる 読者になる 読者になる

mod_davで作ったWebDAVサーバーとmod_monoが競合してDLLファイルをアップロードできない

とあるプロジェクトでmod_davで作ったWebDAVサーバーでファイル共有をしているのですが、DLLファイルがアップロードできないと言われ、調べてみるとエラーログにこんなのが。

System.ArgumentOutOfRangeException: Abnormal string size 1347375616
Parameter name: size
at Mono.WebServer.ModMonoRequest.ReadString () [0x00000] in :0
at Mono.WebServer.ModMonoRequest.GetInitialData () [0x00000] in :0
at Mono.WebServer.ModMonoRequest..ctor (System.Net.Sockets.Socket client) [0x00000] in :0
at Mono.WebServer.RequestReader..ctor (System.Net.Sockets.Socket client) [0x00000] in :0
at Mono.WebServer.ModMonoWorker.InnerRun (System.Object state) [0x00000] in :0
at Mono.WebServer.ModMonoWorker.Run (System.Object state) [0x00000] in :0
[Sun Jan 09 22:34:00 2011] [error] (70014)End of file found: read_data failed
[Sun Jan 09 22:34:00 2011] [error] Command stream corrupted, last command was -1

なんで.NETのエラーやねん、と思ったんですが、このサーバーには mod_mono が入ってて、それと干渉しているようでした。mod_monoのマニュアルを読んでみると、どうもDLLを勝手にASP.NETとして実行するオプションがあったようでした。

この機能を無効にするために、以下の1行を当該のVirtualHostに設定すれば解決しました。

MonoAutoApplication Disabled