1

Web アプリケーションに ASP.NET を使用しています。このメソッドを使用して、サーバー パスにテキスト ファイルを書き込むことができますServer.MapPath()C:\しかし、またはのような別の場所にテキストファイルを作成したいですD:\。IIS バージョン 5.1 を使用しています。

これは、C:\ドライブにファイルを書き込むための私のコードです。

    string text="Welcome";
    StreamWriter sw = new StreamWriter("C:\\sample.txt", true);
    sw.WriteLine(text);
    sw.Close();

アプリケーションを実行すると、ランタイム例外がスローされます

UnauthorizedAccessException. Access to Path C:\sample.txt is denied.

C:\ドライブにテキストファイルを書き込む方法を教えてください...

4

4 に答える 4

3

ディスク上の任意の場所にファイルを作成/書き込み/削除できる権限が必要であることは明らかです。

ここでのヒントは、asp.net アプリケーションが 1 つのプールで実行されており、そのプールが特定のユーザーで実行されていることです。このユーザーには正しいアクセス許可が必要です。

アップデート

asp.net ページで一緒に「実行」する 2 種類のユーザーがいます。1 つは IIS の許可に関係しており、これは KBoek が話しているものです。たとえば、ユーザーが IIS からページを要求し、IIS がユーザー A を使用して、このファイルを読み取って Web に送り返すことができるかどうか、または実行する権限があるかどうかを確認します。

2 番目のタイプのユーザーはプールです。IIS がプールを実行する権限を持っている時点から、プール ユーザーを使用して実行します。そのため、ファイルがプールによって読み取られる場合、iis ではなく、プールに読み取り権限が必要です。

ここに 2 種類のユーザーがいる理由。1 つはデータを見るユーザーを表し、もう 1 つは作成したプログラミングを表すためです。

たとえば、一連のファイルを削除する自動化ツールがある場合、リモートクライアントにこのファイルへの直接アクセスを許可することはできず、必要に応じて削除することもできますが、実行するにはこの権限が必要です。プログラミング。したがって、私たちのasp.netプログラムは、接続してページを表示するユーザーとは異なる権限を持っているため、ここには2種類のユーザーがいます.

于 2012-06-14T10:53:47.250 に答える
2

サーバー プロセスは、(IIS のバージョンに応じて) 特定のユーザーの下で実行されます。そのユーザーは、ファイルを保存するフォルダーへの書き込みアクセス権を持っている必要があります。IIS のバージョンを教えてください。少し待ってください。ユーザー名を調べます。

于 2012-06-14T10:53:16.610 に答える
1

特定の場所に書き込むには、Web サーバーのユーザーにその場所への書き込みアクセス権が付与されている必要があります。仕事のために、これに対するフォルダ権限を設定する必要があります。正確なユーザーは、IIS のバージョンによって異なります。

于 2012-06-14T10:54:29.497 に答える
0

まず第一に、私は使用しますServer.Mappath("C:\\sample.txt");

第二に、例外はすべてを示しています。サーバーにファイルを書き込もうとしているユーザーには、書き込み権限がありません。

アクセス許可については、IIS サーバーで正しいアクセス許可の確認と設定を確認してください。

ユーザーを見つけて、書き込みを許可します。

于 2012-06-14T10:59:07.380 に答える