ASP.NETアプリからネットワーク共有にアクセスします。 Visual Studioでは機能しますが、IISでは機能しません。
-
27-10-2019 - |
質問
イントラネットにネットワーク共有があり、すべての人への書き込みアクセスを許可します(ゲスト)
だから、私はプログラム(Moportalモジュール、とにかく同じだと思う)を書きました。そのパスにいくつかのファイルを書き込み、Visual Studioでうまく機能します。
現在、IIS 7.5で同じプログラムを使用しても機能しません。この例外は得られます。
System.net.Webexception:WebClientリクエスト中に例外が発生しました。 ---> System.io.ioException-ログオンの失敗:不明なユーザー名または悪いパスワード。
まあ... SMB共有のアクセスはすべての人に付与されているので、なぜIISで機能しないのかわかりません...
コードはこれです:
WebClient wc = new WebClient();
wc.DownloadFile(urltodownload, smbshare);
それは何ですか?ありがとう
解決
IISサービスは、デフォルトでファイル共有にアクセスするために付与されていません。アプリプールのIDセットを使用してサイトを実行してみることができます ローカルシステム, 、または、web.configからコードが実行されるアイデンティティを手動で制御します。
<system.web>
<identity impersonate="true" userName="user with correct rights or admin" password="password"/>
...
他のヒント
資格情報を設定してみましたか?
私は、あなたが匿名である資格情報を設定せずに、すべてのグループが何らかの有効な資格情報を必要としていると信じています...
wc.Credentials = CredentialCache.DefaultCredentials;
SMBシェアにアクセスするのは問題ではないようです。 urltodownload
. 。リチャードが言ったように、あなたはデフォルトの資格情報を使用することをお勧めします wc.UseDefaultCredentials = true;
または、特定の資格情報のセットまたはWebサイトをでセットアップする urltodownload
匿名の接続を受け入れる。
原因を参照してください WebException
のために DownloadFile
方法 @ msdn.
ASP.NETの共有を使用するには、何らかの資格情報が必要です。 web.configになりすましを設定したり、ネットワーク資格情報を使用してwc.credentialsを設定したりできます。 web.configでは、system.webセクションの下で次のように設定します。
<identity impersonate="true" userName="username_here" password="password_here" />
私のVisual Studioアプリケーション(WinForms)では、アプリケーションを使用するための強力な名前キー(SNK)を作成するという簡単な行為でした。
理由がわかりません。
おそらく、Visual StudioでSNKを作成するには、私の上の他の著者が言及しているこれらの資格情報を設定する方法があります。
お役に立てれば。