ASP.NET MVC - コントローラーから App_Data フォルダーへの絶対パスを見つける 質問する

ASP.NET MVC - コントローラーから App_Data フォルダーへの絶対パスを見つける 質問する

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リファレンス:

HttpServerUtility.MapPath メソッド

おすすめ記事