3

同じドメインの一部ではなく、同じネットワーク上の別の Windows マシンからファイルを読み取りたい。(ASP.NET C# アプリ)
FileStream を試して (認証できません)、FileWebRequest を試して (file:/// を使用すると FileStream に戻ります)、偽装 ( support.microsoft.com/kb/306158#4 ) を試しました。私のVistaで偽装に失敗しました。
更新: 「偽装に失敗しました」問題を修正しました。しかし、両方でユーザーを「ミラーリング」していても、他のマシンから「アクセスが拒否されました」と表示されるため、問題は残ります...
このタスクにアプローチする正しい方法は何ですか?

4

4 に答える 4

1

おそらくあなたが探している答えではありませんが、正しい方法を求めたので...ファイルサーバーをドメインに参加させ、ASP.NETのサービスアカウントに共有へのアクセスを許可してください。

于 2009-11-30T08:05:13.397 に答える
0

"Z:" などのドライブを、コードが実行されているマシンのリモート マシンにマップします。Z:... を使用してファイルにアクセスします。

于 2014-02-20T23:27:55.997 に答える
0

ウェブクライアントを試してください。これを使用して URI にアクセスできます。これには、「ファイル」プロトコルの使用が含まれると思います (または、HTTP 経由でリモート ファイルを公開することもできます)。

従来のダウンロードには WebClient を使用できます。

WebClient.DownloadFile(Uri address, string localFile)

またはストリームを返します。

WebClient.OpenRead(Uri address)

ただし、認証の問題がまだ残っている可能性があります。「ファイル」プロトコルを使用してできない場合がありますが、標準の Uri の方法で資格情報を提供できます。

試したことはありませんが、web.config で偽装を指定できると思います。

<authentication mode="Windows" />
<identity impersonate="true" username="[user]" password="[password]"/>

これはセキュリティ上のリスクのように思えますが、アプリケーションが匿名ユーザーのデフォルトではなく、ネットワーク ユーザーの資格情報を取得するようにします。

詳細はこちら: How To: Use Impersonation and Delegation in ASP.NET 2.0

于 2009-12-01T00:38:55.437 に答える
0

これが適切なアプローチかどうかはわかりませんが、それが私のやり方です。そのコンピューターのログインを知っていると仮定すると、IPC$ オブジェクトへの WNetConnection を IP/Invoke してマシンで認証し、自分の作業を行ってから、別の P/Invoke を実行して IPC$ への接続を削除します。

于 2009-08-10T02:39:10.950 に答える