ヒマをみつけてWeb開発
その場の思い付きを、ヒマをみつけてWebサイトにしてみるブログ

BlogEngine.NET on Monoハマり中( ̄□  ̄||

Tuesday, 14 April 2009 14:56 by sabro

BlogEngine.NETをMonoで動かすのは、やはりムズイです。環境は故合って、Mono 1.2.4 & BlogEngine.NET 1.4.5 でやってますが、うまく動いてくれません( ̄□  ̄||

BlogEngine.NET Modifications for Mono/Linuxを参考に、以下やったこと、binのリネーム以外は全てWeb.Configの修正です。

System.Managementの読み込みを削除
Mono 1.2.4では使えないNamespaceのようで、かつDBを使用せずXMLでやれば不要そうだったので削除。
Description属性を4つ削除
Web.Configのprovider定義タグではdescription属性が使えないらしいので削除。
DBBlogProviderタグ削除
SqlMembershipProvider削除
DbMembershipProvider削除
SqlRoleProvider削除
DbRoleProvider削除
XMLでやれば不要そうで、かつ動作不良の原因ぽかったので削除。
Compression HttpModuleを削除
ページに「?」が表示されるらしいので削除。
Binディレクトリをbinにリネーム
Linuxのファイル名が大文字、小文字を区別するので変更。
httpRuntimeを削除
クリエモンと同居させてるからか、Machine.Configで、httpRuntimeを読む時エラーになったのでWeb.Configのを削除したらなぜか直ったw。
StrageLocationを仮想パスでなく絶対パスで書く
Web.Configに「StorageLocation="~/App_Data/"」とあって、これを絶対パスで書かないとエラーになる部分があったので変更。しかし、絶対パスにしてもエラーになった・・・orz
最後のは、Mono1.2.4のHostingEnvironment.MapPathで、仮想パスをハジくチェックをしているのが原因だが、Mono 2.0のソースを見たらチェックしなくなっていたので、2.0以上でやらないと動かせないらしい。

 

public static string MapPath (string virtualPath)
{
if (virtualPath == null || virtualPath == "")
throw new ArgumentNullException ("virtualPath");

if (UrlUtils.IsRelativeUrl (virtualPath)) {
string msg = String.Format ("The relative virtual path '{0}', is not allowed here.", virtualPath);
throw new ArgumentException (msg);
}

HttpContext context = HttpContext.Current;
if (context == null)
return null;

return context.Request.MapPath (virtualPath);
}

というわけで、Mono 2.4も出てるらしいので、もうちょっとバージョンが上がったMonoVMで動かしてみようと思います。でも前、クリエモンを乗せたらうまく動かなかったんだよな~( ̄~ ̄)

あと、タイミングのいいことに、昨日、BlogEngine.NETが9ヶ月ぶりにバージョンアップして1.5になったそうなので、そっちも試してみようと思います。昨日、インストールがうまくいってたら、即、アップデートが必要だったと思えば失敗してよかったのかな(^^)

Tags:  
Categories:   .NET
Actions:   Permalink | Comments (1) | Comment RSSRSS comment feed

Comments

February 19. 2010 19:28

Thanks for spending the time to explain the terminlogy to the beginners!

fix bad pool caller error

Add comment




biuquote
  • Comment
  • Preview
Loading