1

IIS で作成した仮想ディレクトリ内のファイルに初めてアクセスしようとしていますが、奇妙な結果が得られます。

OS:Windows XP Pro

IIS: 5.1

開発プラットフォーム: Visual Studio 2008

言語: C#

仮想ディレクトリ名: ポータル

ローカル パス: C:\digital_communications_report_portal

デフォルトの Web サイトのローカル パス: c:\inetpub\wwwroot

問題なくhttp://localhost/portal/testFile.xlsxでファイルをダウンロードできます。

私はこれらのいずれかを試します

string realFilename = Server.MapPath(ResolveUrl("~/portal/testFile.xlsx"));
string realFilename = Server.MapPath(ResolveUrl("localhost/portal/testFile.xlsx"));

そして、「C:\Documents and Settings\jjohnson\My Documents\Visual Studio 2008\WebSites\clientsite\localhost\portal\testFile.xlsx」を取得します。これは、最後に仮想パスが平手打ちされた私のプロジェクト パスであり、有効なパスではありません。 . チルダまたはローカルホストを取得しようとすると、「パス '/portal/testFile.xlsx' をマップできませんでした」というメッセージが表示されます。例外。

私が間違っていることはありますか?

4

1 に答える 1

1

私が間違っていなければ、それServer.MapPath(ResolveUrl("~/relative/path/to/file"))はあなたが望むものではありません. /rooted/path/to/filewhich を渡すと、有効な場所が生成されServer.MapPath()ません。

代わりに単に使用するServer.MapPath("~/relative/path/to/file");

アップデート

発生している問題は、相対 URL に仮想ディレクトリ名 (「ポータル」) が含まれていることが原因です。相対 URL では、仮想ディレクトリ名を指定する必要はありません。アプリケーションのルートを基準とした目的のファイルへのパスのみを指定します。

于 2010-09-10T17:01:55.937 に答える