私の MVC3 Web アプリケーションは常に IIS のサイトとして展開されるとは限らないため、パス文字列を処理するために仮想ディレクトリまたはアプリケーションとして展開されているかどうかを検出する必要があります。
たとえば、サイトが IIS ルートの下に Web サイトとして展開されている場合、次のように記述します。
\ABC\test.txt
これで問題ありません。リクエストはhttp://somehost/ABC/test.txt
ただし、サイトが IIS の既存のサイトの下に仮想ディレクトリまたはアプリケーションとして展開されている場合は、次のようになります。
http://somehost/mymvcapp/
その場合、「\ABC\test.txt」の要求は正しくありません。
「~\App_Data\test.txt」と書くと問題が解決することは理解していますが、「~\」は現在の Web コンテキストのサーバーでしか処理できません。他のレイヤーのファイルに対して何らかのプロセスを実行する必要がある場合がありますが、それらは Web コンテキストに触れることができません。
そのため、アプリケーションが仮想ディレクトリとしてデプロイされているかどうかを検出する必要があります。ファイルへの実際の物理パスを見つけます。それを行う方法はありますか?