- PR -

PDFファイルの開き方

1
投稿者投稿内容
ポッキー
常連さん
会議室デビュー日: 2004/01/29
投稿数: 43
投稿日時: 2004-02-14 11:43
ASP.NETとC#を使って作成しています。
新しいブラウザを開かずに同じブラウザ上にPDFを表示したいのですが
方法を教えてください。

プログラム中に↓のように表記しているのですが、エラーがでてしまします。
Context.Server.Transfer("http://localhost/Print/sample.pdf");

画面の表示だとContext.Server.Transfer("sample.aspx");で
開けるのですが、PDFを開くのには設定がいるのでしょうか?

He
大ベテラン
会議室デビュー日: 2002/12/18
投稿数: 141
投稿日時: 2004-02-14 13:22
引用:
リファレンス HttpServerUtility.Transfer メソッドより:
『現在のページの実行を終了し、そのページへの指定した URL パスを使用して新しいページの実行を開始します。』



と、いうわけで、
ASPワーカープロセスがPDF形式のファイルを実行しようとしてエラーになっているわけです。

引用:

新しいブラウザを開かずに同じブラウザ上にPDFを表示したいのですが
方法を教えてください。


そのPDFにリンクを張っておけばよいのでは?
ポッキー
常連さん
会議室デビュー日: 2004/01/29
投稿数: 43
投稿日時: 2004-02-14 14:39
『現在のページの実行を終了し、そのページへの指定した URL パスを使用して新しいページの実行を開始します。』

現在のページの実行が終了してなかったために出たエラーだと思います。
最初からあるPDFでないので、最初の設定ではできませんが
コードの途中でリンクをはってみます。
ありがとうございます。
He
大ベテラン
会議室デビュー日: 2002/12/18
投稿数: 141
投稿日時: 2004-02-14 15:39
引用:

現在のページの実行が終了してなかったために出たエラーだと思います。


なぜそのように考えました?
Transferメソッドは、現在のページの実行を終了させます
というか、既に終了しているページからメソッドを呼び出すことはできません。(終了してるんですから)
「ページの実行が終了している状態」というのを、どのようにお考えですか?

おそらく「〜〜の子要求のパスが無効です」といったエラーが出ているものと思いますが、
このエラーは、Transferメソッドの引数として与えられたページ側に問題がある場合に発生します。

繰り返しになりますが、
今回の場合は、実行しようとしたページがPDFだった(aspxじゃなかった)ためにエラーになっていると思われます。

引用:

最初からあるPDFでないので、最初の設定ではできませんが
コードの途中でリンクをはってみます。


「コードの途中でリンクをはる」の部分が具体的に何をしようとしているのかわかりませんが、
おそらくなにか勘違いをされているのではないでしょうか?
私が書いた「リンクを張っておけば」は
『<a href="http://localhost/Print/sample.pdf">リンク</a>』という文字列を静的に記述しておけば、
という意味でしたが、
 1.ボタン押下
 2.PDFを動的に生成
 3.レスポンスにPDFを返す
という流れであれば、この方法は無理です。


リクエストとレスポンスの流れに注意して↓の記事を読んでみてください。
http://www.atmarkit.co.jp/fdotnet/aspnet/aspnet16/aspnet16_01.html
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-02-14 15:50
 「エラーがでてしまします」ではなく、「**というエラーがでます。[エラー文のコピー]」という書き方をしていただきたいですね。でないと、想像でしか答えられないし、補完の要求で必要以上に長くかかりますから。

 結局損をするのは「自分」であることを、よく認識してください。


 HttpServer.Transferって、この後のコードは実行されないと思いますよ。HttpResponse.Redirectだったかもしれませんが、「なぜ実行されないんだろう」と悩んだ記憶があります。
ポッキー
常連さん
会議室デビュー日: 2004/01/29
投稿数: 43
投稿日時: 2004-02-14 17:03
質問の仕方がおかしくてすみません。
行き詰まった状態を詳しく書くようにします。

現在のページの実行が終了してなかったために出たエラーだと思ったのは、
ある動作で新しいウィンドウを開いて、そのPage_Load()の中でさらに
違うページを開こうとしていたからです。

そもそも基礎がきっちりしていないので、
教えていただいたASP.NETによるWebアプリケーション実践開発講座を
全部読んでみます。

リンクで<a href="http://AAA.pdf">リンク</a>を思い浮かべましたが
PDFを動的に生成したあとなので、javascriptのwindow.openerみたいなのを
書くと思っていたので、それについて調べていました。

Heさん、Jittaさんありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)