1

System.Web.VirtualPathUtility.ToAbsolute() で相対パスを絶対パスに変換しようとしています

しかし、私はこのエラーが発生しました:

相対仮想パス「./images/gift-card.jpg」はここでは許可されていません。

ちなみにファイル構成は

このコードは .cs ファイルにあり、このファイルは他の .aspx ファイルと同じフォルダー (/root としましょう) にあります。画像はフォルダ /root/images/ にあります

何か案は?

ps: パスを '~/images/gift-card.jpg' に変更しても、例外がスローされます。それ以上の情報がない未処理の例外です。

4

2 に答える 2

4

VirtualPathUtility.ToAbsolute()現在のリクエストのディレクトリなど、ローカルの cotnext を認識しない静的関数です。

したがって、相対パスを渡すことはできません。
代わりに、. で始まる絶対アプリケーション相対パスを渡す必要があります~/

ドキュメントのコメントを参照してください。

アプリケーション絶対パスは、ルート演算子 (チルダ [~]) の代わりにアプリケーション パスが使用されるパスです。

virtualPath が次の場合:

  • 絶対、ToAbsolute メソッドは仮想パスを変更せずに返します。

  • アプリケーション相対。ToAbsolute メソッドは、現在のアプリケーションの仮想ディレクトリ パスを virtualPath の先頭に追加します。たとえば、現在のアプリケーションの仮想ディレクトリ パスには、AppDomainAppVirtualPath プロパティからアクセスできます。

  • ルート化されていないため、ToAbsolute メソッドは ArgumentOutOfRangeException 例外を発生させます。

于 2012-09-25T03:17:02.290 に答える
1

私は解決策を見つけました

Server.MapPath("~/path/file.ext")

これは私の問題を完全に解決し、私が探していた方法でした.

ご意見をお寄せいただきありがとうございます。

乾杯

于 2012-09-25T03:53:09.027 に答える