ASP.netにてIISのWebサーバを構築しています。
イメージファイルがIISサーバと異なるドメインにファイルサーバとしてあります。
閲覧するクライアントPCもファイルサーバとは異なるドメインに存在していて、
イメージファイルフォルダにアクセスする際、「ユーザ:test\usr1」「パスワード:1234」
が求められるようになっています。この参照をVB側でNET USEコマンドなどをクライアントに実行して閲覧するようにしたく考えています。
aspx
1<iframe src="\111.222.333.444\IMG\test.pdf"></iframe
vb
1'Processオブジェクトを作成 2 Dim p As New System.Diagnostics.Process() 3 'ComSpec(cmd.exe)のパスを取得して、FileNameプロパティに指定 4 p.StartInfo.FileName = System.Environment.GetEnvironmentVariable("ComSpec") 5 '出力を読み取れるようにする 6 p.StartInfo.UseShellExecute = False 7 p.StartInfo.RedirectStandardOutput = True 8 p.StartInfo.RedirectStandardInput = False 9 'ウィンドウを表示しないようにする 10 p.StartInfo.CreateNoWindow = True 11 'コマンドラインを指定("/c"は実行後閉じるために必要) 12 p.StartInfo.Arguments = "/c net use \111.222.333.444\IMG /user:test\usr1 1234" 13 '起動 14 p.Start() 15 'プロセス終了まで待機する 16 'WaitForExitはReadToEndの後である必要がある 17 '(親プロセス、子プロセスでブロック防止のため) 18 p.WaitForExit() 19 p.Close()
こちらを実行しても参照できずにいます。画面にPDFを表示させたいので、
iframeを利用したく考えております。
他の方法や、どのようにしたら閲覧クライアント側からユーザ・パスワード付のフォルダに
アクセスできるようになりますでしょうか。
どなたかご教授をお願い致します。
> クライアント側にWindowsコマンドプロンプトを実行させる
そんな事ができたらウィルスをばら撒くサイトをじゃんじゃん作れますが
前のスレッド https://teratail.com/questions/299905 の続きというか拡大で、各クライアントが持つ共有サーバーに対するアクセス権を使って、ブラウザ ⇔ Web サーバー ⇔ ファイルサーバーの共有フォルダにアクセスして、共有フォルダのファイルを閲覧したいという話ですよね?
ご回答ありがとうございます。はい。その通りでございます。
色々調べてみたら、シンボリックリンクを作成して、aspx側で「/シンボリックリンクフォルダ/test.pdf」
としたら参照できるようになりました。
この方法でやろうと思います。
> シンボリックリンクを作成して、aspx側で「/シンボリックリンクフォルダ/test.pdf」
としたら参照できるようになりました。
結局は IIS のワーカープロセス (静的ファイルに直リンクだと IIS の匿名ユーザーかも) がファイルサーバーのファイルを読みに行くのですが、その「シンボリックリンク」を作ることでワーカープロセス (もしくは IIS の匿名ユーザー) にアクセス権を与えることができるのか教えて下さい。できなければ、望むことはできないと思うのですが。
もう一つ質問させてください。先の私のコメント、
> 各クライアントが持つ共有サーバーに対するアクセス権を使って・・・
に対しては YES という答えだったのですが、質問では、
> 「ユーザ:test\usr1」「パスワード:1234」
に固定で良さそうに見えます。どうなんでしょう?
固定でよければ、前のスレッドの回答で解決するはずですが?
ご回答ありがとうございます。
サーバ再起動したら「500 - 内部サーバー エラーです。
検索中のリソースに問題があるため、リソースを表示できません。」
となってしまいました。
ユーザ・パスワードは固定です。
もう少し調べてみます。何かいい方法があればご教授下さい。
宜しくお願いします。
> サーバ再起動したら「500 - 内部サーバー エラーです。
再起動するだけでなく何かしたのだと思いますが、何をしたのか書いてください。問題の iframe を表示?
500 エラーということは例外がスローされたのだと思いますが、スローされた例外は何なのか調べて書いてください。
> ユーザ・パスワードは固定です。
そうであれば、上のコメントにも書いたように、前のスレッドの回答で解決するはずですが?
ワーカープロセスにアクセス権を与えることは前のスレッドの回答でできたが、静的ファイルに直リンクしたため IIS の匿名ユーザーがアクセスに行って、アクセス権がないので拒否されたということ?
直接ファイルを「http://~xxx.pdf」と表示させようとしても、500エラーが表示されてしまいます。Webディレクトリ認証が通ってのかと思います。
ただ再起動しただけなので、原因が不明です・・。
Webディレクトリ認証ってなんですか?
先にも聞きましたが、スローされた例外は何なのか調べて書いてください。
c:\test\test1フォルダにファイルサーバのフォルダをシンボリックリンクにしました。通常は「http://111.111.111.111/test/」でwebにアクセスできます。「http://111.111.111.111/test/test1/test.pdf」としたら500エラーが表示されてしまいました。
話が通じてないようです。先にも聞きましたが、スローされた例外は何なのか調べて書いてください。
どのように調べたらいいでしょうか?
宜しくお願いします。
> c:\test\test1フォルダにファイルサーバのフォルダをシンボリックリンクにしました。
それでは当然ダメで、もしアクセス権の問題が無いとしても(無いわけないのですが)、それを仮想ディレクトリに設定しないと(できないと思いますが)ブラウザからはアクセスできません。
とにかく完全に迷走していてやってることがメチャクチャという感じ。一度リセットしましょう。
web.config で customErrors 要素の mode 属性を Off にすると詳細エラー情報がブラウザに表示されます。デフォルトで RemoteOnly なので、そうなっていれば Web サーバーのブラウザでアクセスすれば詳細エラー情報が表示されます。
その中にスローされた例外が何かの情報が含まれていると思います。
質問者さん、無言ですが、回答したのでそれに対するフィードバックを書いてください。役に立った/立たなかったぐらいはすぐ返せるのでは? 役に立たなかったなら、どこが期待する答えと違うか書いてもらえると別の案が出せるかも。とにかく無言は NG です。
ありがとうございます。現在調査中です。
ありがとうございます。解決できました。
解決方法を下記に記載しておきます。
今後とも宜しくお願いします。
質問者さんの回答のやり方は、間違っているとまでは言いませんが、それに近いことをしています。詳しくは質問者さんの回答のコメント欄に書きましたので読んでください。
回答2件
あなたの回答
tips
プレビュー