Pha*_*rus 41 asp.net-mvc server.mappath filepath
我试图从我的ASP.Net MVC控制器中的磁盘读取XSLT文件.我正在做的是以下内容:
string filepath = HttpContext.Request.PhysicalApplicationPath;
filepath += "/Content/Xsl/pubmed.xslt";
string xsl = System.IO.File.ReadAllText(filepath);
Run Code Online (Sandbox Code Playgroud)
但是,在forums.asp.net上这个帖子的一半,有以下引用
HttpContext.Current是邪恶的,如果你在你的mvc应用程序中的任何地方使用它,你做错了,因为你不需要它.
虽然我没有使用Current,但我想知道在MVC中确定文件的绝对物理路径的最佳方法是什么?出于某种原因(我不知道为什么!)HttpContext对我来说不合适.
在ASP.Net MVC中是否有更好的(或推荐/最佳实践)方法从磁盘读取文件?
Cra*_*ntz 75
string filePath = Server.MapPath(Url.Content("~/Content/Xsl/"));
Run Code Online (Sandbox Code Playgroud)
我不同意这个HttpContext.Current"邪恶" 的观点.对于每个问题来说,这不是锤子,但它确实比例如Session更好,它可以做得很好.
rai*_*r33 12
如果您在控制器类中特别使用WebApi,则可以使用以下替代方法:
HostingEnvironment.MapPath("/Content/Xsl/pubmed.xslt")
Run Code Online (Sandbox Code Playgroud)
Dar*_*rov 10
我会通过DI框架将站点根路径注入到控制器构造函数中:
public class HomeController: Controller
{
private readonly string _siteRoot;
public HomeController(string siteRoot)
{
_siteRoot = siteRoot;
}
public ActionResult Index()
{
string filePath = Path.Combine(_siteRoot, @"Content\Xsl\pubmed.xslt");
return File(filePath, "text/xml");
}
}
Run Code Online (Sandbox Code Playgroud)
就站点根路径而言,它可以用HostingEnvironment.ApplicationPhysicalPath静态属性表示.
| 归档时间: |
|
| 查看次数: |
70238 次 |
| 最近记录: |