12

を使用してウェブサイトを開発してVisual Studio 2010います。ファイルをパスに保存しようとしています。ローカルホストで正常に動作します。

しかし、IIS では同じコードが機能しません。次のエラーが表示されます

例外の詳細: System.IO.DirectoryNotFoundException: パス 'C:\Inetpub\wwwroot\Vendor\cn.jpg' の一部が見つかりませんでした。

パス「C:\Users\shashank\Desktop\ab.csv」の一部が見つかりませんでした。

コードは次のとおりです。

protected void btnImportFile_Click(object sender, EventArgs e)
{
    sArReportText = File.ReadAllText(txtFilePath.Text.Trim());
    // Set the report Properties to insert Report information
    SetProperties();
}
4

7 に答える 7

1

これは、指定したファイルが Web サーバーにないか、間違ったパスが使用されていることが原因である可能性があります。Web サーバーに保存される正確なフォルダーとファイル名を指定します。HttpContext.Current.Request.ApplicationPathまたはを使用Server.MapPathして、目的のファイルがある正しい場所を指定します。また、この特定のファイルとそのフォルダーに読み取りと書き込みのアクセス許可を与えていることも確認してください。

于 2013-09-11T12:05:10.857 に答える
0

サーバー上のファイルにアクセス、作成、および削除するには、権限が必要です。私のプロジェクトと同様に、Impersonator クラスを使用して、サーバーからさまざまなファイルやフォルダーにアクセスしています。そうしないと、例外がスローされます。

于 2013-09-11T13:29:17.413 に答える
0

コードの偽装を使用できます。

http://csharptuning.blogspot.com/2007/06/impersonation-in-c.html http://www.codeproject.com/Articles/14358/User-Impersonation-in-NET

とにかく、なりすましとして使用する人は誰でも、保存されている場所に読み書きできる必要があります。この方法は、アプリケーションでネットワーク経由でフォルダーを削除/作成するために使用します。App_Data がベスト プラクティスであっても、そのフォルダー外のドキュメントにアクセスすることがビジネス要件になる場合があります。

IIS で偽装を設定することもできます。

また、関数が btnImportFile と呼ばれることにも気付きました。ファイルをアップロードする場合は、FileUpload コントロールを調べて、ファイルのバイト配列を取得し、必要に応じて保存することをお勧めします。 https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.fileupload%28v=vs.110%29.aspx . 必要に応じて、引き続き Server.MapPath または HttpContext.Current.Request.ApplicationPath を使用する必要がある場合があります。

于 2015-07-02T04:59:44.333 に答える
0

ファイルをフォルダーに保存できるようにするには、iis でアクセス許可を設定する必要があります。基本的に、アップロードしたファイルは、ルート ディレクトリ内にある別のフォルダー内に保存する必要があります。

于 2013-09-11T12:00:30.680 に答える
-3

通常は、App_Dataフォルダーを使用してファイルを保存することをお勧めします。

チュートリアルについては、こちらのファイルの操作 を参照してください。

于 2013-09-11T13:33:36.090 に答える