パスワード保護されたネットワーク共有からASP.NET読むファイル

StackOverflow https://stackoverflow.com/questions/1496068

  •  19-09-2019
  •  | 
  •  

質問

私は、ネットワーク共有からファイルにアクセスする必要があるのWindows 2003 Server上のASP.NETのウェブサイトを持っています。ネットワーク共有がパスワードで保護され、提供されるユーザ名とパスワードを必要とします。

私はWindowsベースのウェブサイト上で認証をベースのフォームを使用していない。

だから私の問題は、私は以下のコードを使用してnetworkshareから任意のファイルを読み込むしようとすると、それはアクセス拒否をスローし、あります DirectoryInfo networkShare =新DirectoryInfo( "\\ TESTSERVER \共有");

その名は、ASP.NETのWebサーバ上に存在しないため、

だから私は偽装関数呼び出しにネットワーク共有のユーザー名とパスワードを提供することで、偽装を使用してみました、しかし、コールは明らかに失敗しました。それでは、私はWebサーバ上に存在しないログインのユーザ名とパスワードを渡されたので、この時間は、偽装の呼び出しは、しかし、それはまだ異なっているネットワーク共有のユーザー名とパスワードのcuzのネットワーク共有にアクセスすることはできません動作します。

最後に、私は、ネットワーク共有に一致するウェブサーバ上の正確な同じユーザー名/パスワードを作成しました。今回偽装関数呼び出しが動作しますので、ネットワーク共有を行います。私は正常に共有から読むことができますよ。

だから私の質問は、私がWebサーバにユーザ名を追加することなく、ネットワーク共有を読むことができる方法があります。 「Cuzの毎回ネットワーク共有ログインの変更は、私は再び、あまりにもウェブサーバに新しいユーザー名を作成する必要があります。これは理想的ではありません。

任意のアイデア?

役に立ちましたか?

解決

これを行うには「正しい」方法は、共有にアクセスすることができますアイデンティティとしてWebサーバのアプリケーションプールを実行することです。その方法は、唯一の資格ストレージが(むしろ、あなたのコード内または読み込み可能な設定ファイルに比べて)IISの設定で安全に行われます。同じWindowsドメイン(または信頼関係を持つ異なるドメイン)でのウェブサーバやファイルサーバを置くことは最も簡単な方法ですが、「同じユーザー名/パスワード」の事はそこにも動作するはずです。

あなたのコードや設定にユーザ名/パスワードを置くことを気にしない場合は、

、あなたはP /でWNetAddConnection2に起動し、ユーザ名を渡すことができます/パスワードで、あなたは共有にアクセスすることができるはずです。これは、一致するアカウントを持っているウェブサーバを必要としませんが、あなたが本当にパスワード(暗号化されたレジストリの保存にSystem.Security.Cryptography.ProtectedDataに見て)を確保する必要があります。

他のヒント

これを試します
WebRequest request = WebRequest.Create( "http://server/file.xml" );
request.PreAuthenticate = true;
request.Credentials = new NetworkCredential( "user", "pass" );

request.GetResponse();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top