ASP.NET MVC プロジェクトのコントローラーから App_Data フォルダーへの絶対パスを見つける正しい方法は何ですか? .xml ファイルを一時的に操作できるようにしたいのですが、パスをハードコードしたくありません。
これは動作しません:
[HandleError]
public class HomeController : Controller
{
public ActionResult Index()
{
string path = VirtualPathUtility.ToAbsolute("~/App_Data/somedata.xml");
//.... do whatever
return View();
}
}
Web コンテキスト外では VirtualPathUtility.ToAbsolute() は機能しないと思います。文字列パスは "C:\App_Data\somedata.xml" として返されます。
MVC アプリ内の .xml ファイルのパスはどこで決定すればよいですか? global.asax を指定して、それをアプリケーション レベルの変数に固定しますか?
ベストアンサー1
ASP.NET MVC1 -> MVC3
string path = HttpContext.Current.Server.MapPath("~/App_Data/somedata.xml");
ASP.NET MVC4
string path = Server.MapPath("~/App_Data/somedata.xml");
MSDNリファレンス: