1

以前に作業したことのないネットワークで新しいアプリケーションを作成しましたが、問題が発生しています。

次の C# コードがあるとします。

FileStream fs = File.Create(@"\\MyServer\MyShare\testing.txt");
fs.Close();

コンソール アプリケーションでは、このコードは正しく実行されます。

ASP.Net アプリケーションで、次のエラーが表示されます:ログオンに失敗しました: 不明なユーザー名またはパスワードが正しくありません。

ASP.Net アプリケーションで、identity impersonate="true" を追加すると、次のエラーが発生します。パス '\MyServer\MyShare\testing.txt' へのアクセスが拒否されました。

そのログオン失敗メッセージに出くわしたことはありません。これはどこから来ているのですか?サーバー上にアプリケーションを作成し、物理的な場所に書き込むと、正常に動作します (したがって、セキュリティは良好です)。共有に対するセキュリティが機能していないように見えます (「Everyone」が設定されていても)。完全な書き込みまで)、またはサーバーレベルで何かが欠けているため、一般的に何も表示できません。

ここで何が欠けているか知っている人はいますか?同様のことを行う他のアプリケーションを作成しましたが、この問題に遭遇したことはありません

ありがとう!

4

3 に答える 3

1

アップデート:

だから私はこれをすぐに投稿したと思います...私のローカルホストで失敗した理由は、ディレクトリが匿名アクセスを許可するように設定されていたためです(したがって、ページは偽装されていませんでした;ユーザーは''でした)。

また、サーバーでも動作を開始しました。ただし、そこでは何も変更されていません...アプリのダウンタイム/シャットダウン中に何かがトリガーされたかどうかはわかりませんが、すべてが期待どおりに機能しています。

コメントありがとうございます!

于 2008-12-16T19:42:02.110 に答える
0

問題は、ID 偽装が false に設定されている場合、ASP.NET ワーカー プロセス アカウントが共有 (通常は NETWORK SERVICE または ASPNET アカウント) に書き込もうとしていることです。実行している Windows のバージョンによって異なります。

ユーザー名またはパスワードを指定せずに impersonate を true に設定すると、現在のユーザー認証を使用してリクエストが試行されます。

A ワーカー プロセス アカウントのアクセス許可を付与する必要がありますが、これはおそらく不可能です。または B アプリケーションが偽装できる特定のアカウントを作成し、web.config 内の ID タグで資格情報を指定します。

于 2008-12-16T19:14:25.270 に答える
0

デフォルトでは、ASP.NET アプリケーションはYourMachine \IUSR_ YourMachine として実行されます。 共有のアクセス許可を Everyone プリンシパルに開放するか (マシンが同じドメインにない場合は機能しない可能性があります)、共有にアクセスできるユーザーとして IIS アプリケーションを実行する必要があります。

ASP.NET アプリケーションを実行するユーザーは、次の方法で変更できます。

[管理ツール] -> [インターネット インフォメーション サービス] を開き、アプリケーションを含む Web サイトまたは仮想ディレクトリを右クリックし、[プロパティ] をクリックします。[ディレクトリ セキュリティ] タブを選択し、 [編集] をクリックします。最後に、[匿名アクセス]セクションで、共有にアクセスできるユーザーのユーザー名とパスワードを入力します。

マイク

于 2008-12-16T19:18:04.360 に答える