[Fixes #1201] Handle virtual paths in FilePathResult

nit: you can probably write this simpler by breaking it out like:

```
if (...)
{
    return path;
}


if (...)
{
    return fileInfo.PhysicalPath;
}

throw ...
```