MVC 4 ApiController のコントローラーで Server.MapPath(virtualPath) メソッドにアクセスする必要があります。
答えは通常、ControllerContext.HttpContext.Server からアクセスすることです。ただし、MvcControllers とは異なり、ApiController の ControlerContext には HttpContext がありません。
Global.asax.cs でインスタンス化された WebApiAppication には、HttpContext 要素 (Context) があります。ただし、MVC 3 以前とは異なり、コントローラーから WebApiApplication にアクセスする方法が見つかりません。(以前の世代では、それへの参照が静的インスタンス変数に格納されていました。MVC 4 ではそれが削除されています。)
また、ユニット Test からコントローラー メソッドを呼び出すときに、余分な足場がなくても機能するものを見つけようとしています。WebApi コントローラーでも、HttpContext.Current を使用してアクセスできると思います (少なくともコンパイルされます) が、テストのためにそれをモックすることはできません。(ここでは、Controller メソッドを直接呼び出す単体テストについて説明しています。最近のチュートリアルで、薄い HttpClient を使用して単体テストを行い、スタック全体をテストするのを見てきました。これは、低レベルの統合テストのように思えます。私に。)
これはそれほど難しいことではないように思えますが、私はそれをグーグルで調べたり試したりするのに数時間を費やしました。