私はコードを持っています
string xsltPath = System.Web.HttpContext.Current.Server.MapPath(@"App_Data") + "\\" + TransformFileName
返す
C:\inetpub\wwwroot\websiteName\SERVICENAME\App_Data\FileName.xsl
ServiceControllerへのパスSERVICENAME
を取得するのはなぜですか?にあるApp_Dataへのパスが必要です
C:\inetpub\wwwroot\websiteName\App_Data\FileName.xsl
仮想ルートから開始することを指定する必要があります。
string xsltPath = Path.Combine(System.Web.HttpContext.Current.Server.MapPath(@"~/App_Data"), TransformFileName);
さらに、文字列を連結するのではなく、 Path.Combine
を使用してパスを結合することをお勧めします。 Path.Combine
を使用すると、ダブルパス区切り文字が含まれる状況に陥ることがなくなります。
[〜#〜] edit [〜#〜]:
「絶対」および「相対」パスと、それらが「物理」および「仮想」パスと比較する方法を定義できますか?
MSDNには、相対パス、物理パス、および仮想パスに関する 適切な説明 があります。ご覧ください。
これまでに与えられた答えはあなたが探しているものですが、私はあなたの特定の場合、あなたが実際に必要なものはこれだと思います:
AppDomain.CurrentDomain.GetData("DataDirectory").ToString()
MVCまたはASP.NETの将来のバージョンでそのディレクトリ名が変更された場合、これは引き続きApp_Dataディレクトリへのファイルパスを返します。
このようにしてみてください(@"~/App_Data")
。 ~/
はルートディレクトリを表します。