2011-07-20 9 views
0

統合パイプラインモードでインターネットインフォメーションサービス(IIS)に展開するASP.NET Webアプリケーションを使用しています。アプリケーションには、Microsoft SQL Serverデータベースに格納されている画像のフォトギャラリーが含まれています。アプリケーションがワーカープロセスをブロックすることなく、データベースからイメージを取得できるようにする必要があります。私は何をすべきか?ワーカープロセスをブロックするために起こっているのは何もありませんので、統合パイプラインを使用してIISにASP.Net Webアプリケーションを展開する

<asp:GridView ID="GridView1" runat="server" 
       AutoGenerateColumns="False" DataKeyNames="ID" 
       DataSourceID="SqlDataSource1"> 
<Columns> 
<asp:BoundField DataField="ID" HeaderText="ID" 
       InsertVisible="False" ReadOnly="True" 
           SortExpression="ID" /> 
<asp:BoundField DataField="ImageName" HeaderText="ImageName" 
           SortExpression="ImageName" /> 
<asp:TemplateField HeaderText="Image"> 
<ItemTemplate> 
<asp:Image ID="Image1" runat="server" 
      ImageUrl='<%# "Handler.ashx?ID=" + Eval("ID")%>'/> 
</ItemTemplate> 
</asp:TemplateField> 
</Columns> 
</asp:GridView> 
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
SelectCommand="SELECT [ID], [ImageName], [Image] 
       FROM [Images]"></asp:SqlDataSource> 

答えて

1

あなただけ先に行くとアプリケーションを作成する必要があり、

using System; 
using System.Web; 
using System.Configuration; 
using System.Data.SqlClient; 

public class Handler : IHttpHandler { 

public void ProcessRequest (HttpContext context) 
{ 
SqlConnection con = new SqlConnection(); 
con.ConnectionString = ConfigurationManager.ConnectionStrings 
         ["ConnectionString"].ConnectionString; 

// Create SQL Command 
SqlCommand cmd = new SqlCommand(); 
cmd.CommandText = "Select ImageName,Image from Images" + 
        " where ID [email protected]"; 
cmd.CommandType = System.Data.CommandType.Text; 
cmd.Connection = con; 

SqlParameter ImageID = new SqlParameter 
        ("@ID", System.Data.SqlDbType.Int); 
ImageID.Value = context.Request.QueryString["ID"]; 
cmd.Parameters.Add(ImageID); 
con.Open(); 
SqlDataReader dReader = cmd.ExecuteReader(); 
dReader.Read(); 
context.Response.BinaryWrite((byte[])dReader["Image"]); 
dReader.Close(); 
con.Close(); 
} 

......提案と設計コードがあるしてください。プロセスはマルチスレッド化されています。つまり、各接続は他の接続と干渉することなく処理されるため、問題ありません。

+0

あなたの編集が表示されていますが、それでも正常に実行できないことはありません。パイプラインモードは基本的には無関係です。これは、完全に正常なasp.net Webアプリケーションです。 – Jordan

関連する問題