Question: I am trying to read an XSLT file from disk in my ASP.Net MVC controller. What I am doing is the following:

```
string filepath = HttpContext.Request.PhysicalApplicationPath;
filepath += "/Content/Xsl/pubmed.xslt";
string xsl = System.IO.File.ReadAllText(filepath);

```

However, [half way down this thread on forums.asp.net](http://forums.asp.net/t/1201036.aspx) there is the following quote

> 
> HttpContext.Current is evil and if you
>  use it anywhere in your mvc app you
>  are doing something wrong because you
>  do not need it.
> 
> 
> 

Whilst I am not using `Current`, I am wondering what is the best way to determine the absolute physical path of a file in MVC? For some reason (I don't know why!) `HttpContext` doesn't feel right for me. 

Is there a better (or recommended/best practice) way of reading files from disk in ASP.Net MVC?

Answer: 
```
string filePath = Server.MapPath(Url.Content("~/Content/Xsl/"));

```

I disagree with the idea that `HttpContext.Current` is "evil." It's not the hammer for every problem, but it is certainly better than, e.g., Session for stuff that it can do OK.
If you're using WebApi or not specifically within a controller class, you can use the following as an alternative:

```
HostingEnvironment.MapPath("/Content/Xsl/pubmed.xslt")

```