7

我有一个 ASP.Net MVC 控制器操作,它需要返回一个包含另一个 html 文件内容的 json 结果(它实际上是 jsonp,但这并不重要)。所以基本上,我想这样做:

[JsonpFilter]
public JsonResult GetHeader()
{
    var html = System.IO.File.ReadAllText("/htm/external/header.htm");

    return Json(new { html = html }, JsonRequestBehavior.AllowGet);
}

但是,它没有找到正确的文件。当我希望它查看服务器的根目录(当然还有 /htm/external)时,它正在 C 目录中查找(找不到路径“C:\htm\external\header.htm”的一部分)。

我怎样才能读入这个文件?它是外部可用的,所以我想我可以为它发出单独的网络请求,但似乎我应该能够直接定位它。

4

1 回答 1

28

您可以使用HttpServerUtility.MapPath 方法解析到其物理位置的虚拟路径:

string html = System.IO.File.ReadAllText(HttpContext.Current.Server.MapPath("~/htm/external/header.htm"));
于 2012-12-04T21:14:25.350 回答