Я знаю, что эта проблема была опубликована миллионы раз раньше, но это может быть иначе.Данные не считываются в SqlReader Неверная попытка чтения, когда данных нет.
Я использую таблицу SQL со столбцами ID, год, месяц, pdffile
в моей веб-странице, я хотел бы пользователю просматривать документ в формате PDF, что они хотели бы видеть из того, что временные рамки они выбирают.
до сих пор с этим:
string year = ddlYear.SelectedValue.ToString();
string month = ddlMonth.SelectedValue.ToString();
pdfFrame.Attributes["src"] = "../pdfDocs.ashx?Year=" + year + "&Month=" + month;
он загружает PDF, если она есть. это моя проблема. как я поймаю ошибку в заголовке вопроса? Я хочу поймать эту ошибку и отобразить сообщение на этикетке пользователю, указав, что файл не найден. Я использую обработчик для чтения varbinary, который является моим pdf-файлом.
Вот код обработчика:
SqlConnection conn = new SqlConnection(@"Server=DEV6\MSSQLHOSTING;Database=Intranet;Trusted_Connection=True;");
conn.Open();
SqlCommand cmd = new SqlCommand("select PDFDocument from LeaveChart where (Year like @Year and Month like @Month)", conn);
cmd.Parameters.AddWithValue("Year", context.Request.QueryString["Year"]);
cmd.Parameters.AddWithValue("Month", context.Request.QueryString["Month"]);
SqlDataReader reader = cmd.ExecuteReader();
reader.Read();
byte[] content = (byte[])reader.GetValue(0);
MemoryStream ms = new MemoryStream(content);
ms.Position = 0;
context.Response.ContentType = "Application/pdf";
ms.WriteTo(context.Response.OutputStream);
context.Response.End();
reader.Close();
conn.Close();
, как я сказал, что работает, чтобы отобразить существующие файлы. может ли кто-нибудь предложить какие-то предложения? Можно ли отправить сообщение от обработчика обратно на веб-страницу, не говоря ни файла, и как отобразить его, не шокируя клиента?
заранее спасибо
И я предполагаю, что возвращаемый тип вашего обработчика - MemoryStream? –
if (! Reader.Read()) ShowNoFile(); ? – gsharp
есть. возвращаемый тип - это поток памяти @PM –