1

サーバーからファイルを取得してダウンロードするプログラムがあります。それ自体はサーバー上にあるため、実行するにはブラウザを開いてパラメータ付きの URL を入力します。

現在、プログラムが私のマシンにある場合、完全に正常に動作します。ただし、ブラウザ経由でアクセスするとハングするようです。MessageBox.Show(username, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1, MessageBoxOptions.ServiceNotification); を試しました。

string[] lines = {"First line", "Second line", "Third line"};
        System.IO.File.WriteAllLines(@"C:\Users\Public\TestFolder\WriteLines.txt", lines);

サーバー上で実行すると、どちらもエラーが発生します(ただし、自分のマシンでは問題ありません)。

using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Users\Public\TestFolder\WriteLines2.txt"))
file.WriteLine("asfsd");

ファイルは作成されますが、コンテンツはファイルに入れられないため、これは writeline でハングしているようです。なぜこれが起こっているのか、または問題がどこにあるのかを知るために私が入れることができるものの提案はありますか?

4

3 に答える 3

4

私が推測しなければならなかった場合。私はあなたが権限を持っていなかったと言います。Impersonate ステートメントですべてをラップするか、ワーカー プロセスにディレクトリへのアクセスを許可してください。

using (new Impersonator(username, domain,password)) {
      using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Users\Public\TestFolder\WriteLines2.txt"))
      file.WriteLine("asfsd");
      }
 }

また、書き込む前にディレクトリが存在することを確認してください。

于 2012-07-11T13:17:32.943 に答える
2

WinForms 開発と ASP.NET 開発を混在させているように聞こえますが、これらは 2 つの非常に異なる動物です。

ファイルへの書き込みに問題がある場合は、パーミッションの問題が原因である可能性が高くなります。通常、IIS の既定のアプリ プールは NETWORK SERVICE ユーザーとして実行されますが、このユーザーはターゲット ディレクトリでアクセス許可を持っていない可能性が高くなります。

于 2012-07-11T13:18:29.517 に答える
1

あなたはローカルファイルに書き込もうとしていますが、サーバー上のIISには明らかにそれを行う権限がありません(驚くべきことです:-))。C:\ ではなく、webapp フォルダーにファイルを保存します。

于 2012-07-11T13:18:36.107 に答える