2017-07-15 63 views
1

イントラネット上の共有ドライブにWebサービスを書き込もうとしています。私が正しく理解していた場合、私は私のStreamWriterにStreamWriterがIOExceptionをスローするログオン失敗:不明なユーザー名または不正なパスワード

string fullpath = path + "\\" + fileName; 
using (System.IO.StreamWriter file = new System.IO.StreamWriter(fullpath, append)) 
{   
    file.WriteLine(contents); 
    file.Close(); 
} 

そして、私が見ている例外、

IOException - Logon failure: unknown user name or bad password 

をIOExceptionが取得しています、IIS Webサーバのユーザがアクセスを持っている必要があります共有ドライブに書き込みます。私は、今のところハードコードの資格情報をデバッグする目的で共有ドライブに書き込む方法があるのだろうかと思っています。 StreamWriterに資格情報を提供するにはどうすればよいですか、それとも私が使用しなければならない別のメカニズムがありますか?

私は偽装(using StreamWriter on server in C#)を調べ、可能ならばそれを最後の手段として使用したいと考えています。

+0

あなたの問題を解決する必要がありますが、それはへのファイルレベルのアクセス権を持っていないファイルにアクセスしようとしているファイルと対話するサービスですか?例えば同じユーザーアカウントを使用している場合は、ファイルを開くことはできますか? –

+0

上記のコメントを明確にするために、ユーザー/サービスアカウントはファイルを要求するために使用されるため、IISサーバーがアプリケーションプールを実行しているユーザーはファイルのアクセス許可が必要です。これがActive DirectoryユーザーとWindowsのアクセス許可で管理されている場合は、システム管理者とチャットしてこれらのアクセス許可を要求することはできますか? –

+0

@Joe_DMこれはsysで管理する必要があると思った。管理者私は今夜​​それに取り掛かりたいと思っていましたし、資格情報を提供する他の方法があるのだろうかと思っていました。 –

答えて

0

ネットワークドライブにプログラムで書き込むときは、プログラムの起動に使用したユーザー名とパスワードを使用します。ドメインを使用していない限り、ネットワークドライブがユーザー名とパスワードを認識しないため、エラーが発生します。

これを修正するには、別のユーザーと同じコードを実行するだけです。これは基本的にあなたが避けたいものですが、私はuseful Stack Overflow Threadを見つけました。これは、コードを使って簡単にするためのラッパークラスへのリンクがあります。

threadから)このような単純な:

using (Impersonation.LogonUser(domain, username, password, logonType)) 
{ 
     // do whatever you want as this user. 
} 

これは

関連する問題