技術日記
技術調査記録Edit

XCode4.2にアップデートしたら、今まで使えていたSubversionレポジトリにつながらなくなった。よくわからん。ひとまず後で。

ASP.NET MVC 3で作ったアプリケーションを、Windows 2003 R2で動かしてみる。

ひとまず普通にコンパイルしたアプリケーションディレクトリを、丸ごとサーバー機にコピーし、IISでアプリケーションとして(適当なディレクトリ下に)追加してみるが、動かない。どうやら必要なDLLがないようだ。

iis7 - IIS 7 can't run ASP.NET MVC application due to missing System.Web.Helpers - Server Faultにあるように、ASP.NET MVC 3で使われる、

  • System.Web.Helpers
  • System.Web.MVC
  • System.Web.WebPages
  • Microsoft.Web.Infrastructure
  • System.Web.Razor
  • System.Web.WebPages.Razor
  • System.Web.WebPages.Deployment
をローカルコピーするように設定する。参照として含まれていないものは参照として追加しておく。そうするとビルド時にbinディレクトリ内にコピーされる。

これで基本的なアプリケーション部分は動作する。つづいて、MySQLに接続したいんで、ADO.NET Driver for MySQL (Connector/NET)をダウンロード&インストールする。

これでひとまずASP.NET MVC 3で作成したWebアプリケーションの基本機能と、MySQL接続機能が動作する。

このアプリケーションをサーバーのルートディレクトリで動作させるために、デフォルトWebサイトのベースディレクトリをアプリケーションディレクトリに変更。これでひとまずサーバーにアクセスするとトップページ以下でASP.NET MVC 3アプリケーションが動作した。

続いて、デフォルト以外のアプリケーション設定値を取り扱う方法。といっても、まあ普通にWeb.Configに書けばいいんだよね。configuration/appSettings以下に適当なキーで設定値を追加する。たとえば、

[sourcecode language="xml"]
<?xml version="1.0" encoding="utf-8" ?>
...中略

...中略
 
    ...中略
    
  

[/sourcecode]
なんて感じでfooというキーでbarという値をセットした場合は、
[sourcecode language="c#"]
using System.Configuration;
..中略
string foo = (string)ConfigurationManager.AppSettings["foo"];
[/sourcecode]
なんて感じで取得できる。

続いてASP.NET MVC 3でバイナリファイルをダウンロードさせる方法。通常のコントローラのアクションではActionResult型を戻り値にしたりして、結びつけられたビューでのレンダリング結果を返したりするけれども、ファイルダウンロードならば特にActionResultとかいらない。

[sourcecode language="c#"]
...適当なコントローラクラスの中
public void Download(string filename)
{
  string localFilePath = ...; // ダウンロードしたいファイルのローカルパスを取得
  Response.ClearContext();
  Response.AddHeader("content-disposition", "attachement; filename=" + filename);
  Response.ContentType = "application/octet-stream";
  Response.WriteFile(localFilePath);
  Response.End();
}
[/sourcecode]
こんな感じで簡単にダウンロードできた。

ASP.NET MVCは裏で何をやっているのかよくわからないフレームワークだけど、最悪アクションメソッド内でRequest、Responseオブジェクトが見えているから、正しくアクションメソッドが呼び出されてくれたら、あとはRequestとResponseを使って、限りなくプリミティブなレベルでの処理を書けば、なんとかなるっぽいな。

Published At2011-11-09 21:42Updated At2011-11-09 21:42