- PR -

画像の表示失敗

1
投稿者投稿内容
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2003-10-27 10:51
お世話になっております。
ASP.NET C# VS2003 で開発しております。

DBに格納されている画像を動的に表示するために
Photo.aspxというページを作成し
Photo.aspxにQueryStringで画像のIDを渡すと
Photo.aspxがDBからデータ取得しResponse.BinaryWrite()で表示しています。

メインのページでは
System.Web.UI.WebControls.Imageを複数配置し
Image.ImageUrl = "Photo.aspx?ID=0001"
のように設定しています。

処理的には問題ないと思うのですが、画像の表示に失敗することが頻繁に起きます。
失敗すると画像のところに×マークで表示されてしまいます。
失敗した画像を右クリックして画像の表示を選択すると、きちんと表示されます。
これはサーバ側のスペックの問題なのでしょうか?
なにか回避策はあるでしょうか?
よろしくお願いいたします。











Gordie
ベテラン
会議室デビュー日: 2003/10/14
投稿数: 64
投稿日時: 2003-10-27 12:34
Photo.aspxはセッション変数を利用しますか?
利用しないのであれば、EnableSessionStateをFalseにして試してみてください。

セッションを利用する場合、同一セッションで一度に処理できるのは1つの要求だけと決まっています。
たとえばaspxで作られたページ内にこの方法で画像を3つ貼り付けたとした場合、ページを処理するaspxが終了し、前2つの画像を出力するaspxが終了して、ようやく3番目の画像の処理が開始されます。
つまり前の処理が長引いた場合、後の処理がつかえてブラウザは待たされることになり、最悪タイムアウトで画像が表示されないということになります。

セッションとは独立して動作するページであれば並列に動作できるので、このような直列化の問題は発生しなくなり、パフォーマンスの向上につながります。(向上というより、それが本来あるべき姿ですが。)

はずしてたらごめんなさい
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2003-10-27 16:03
原因は私の使っているSleipnir(タブ型ブラウザ)が
レジストリのMaxConnectionsPerServerを16に設定していて
同時に16のコネクションをはろうとしていたためでした。
ローカルのIISはコネクション数10しか許可していないために
コネクションの限界数を超えてしまっていたようです。
Gordie様のレスは初めて知った内容だったので、とても勉強になりました。
Gordie様ありがとうございました。

1

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