Похоже, проблема в том, что ваша бизнес-логика - код, необходимый для создания изображения штрих-кода, - находится не в том месте.
Вы должны держать эту бизнес-логику подальше от презентации логика вашей aspx-страницы (которая предназначена для предоставления изображения для ответа на URL-адрес), и переместите логику создания Bitmap
в такое место, где можно получить код «обслужить штрих-код» и «сохранить штрих-код на диск»Это.Это может быть другая сборка бизнес-логики или просто отдельный класс в рамках одного проекта.Главное, что вы хотите, чтобы он был в повторно используемом месте.
В этот момент ваш код aspx изменится на что-то вроде:
Response.ContentType = "image/jpeg";
using (Bitmap bitmap = barcodeGenerator.Generate(Code))
{
bitmap.Save(Response.OutputStream, ImageFormat.Jpeg);
}
, а код сохранения изменится на что-то вроде:
// TODO: Validate that the text here doesn't contain dots, slashes etc
string code = Label1.Text.ToUpper();
string file = Server.MapPath("barcodeimages/" + code + ".jpeg");
using (Bitmap bitmap = barcodeGenerator.Generate(code))
{
bitmap.Save(file, ImageFormat.Jpeg);
}
Здесь barcodeGenerator
в идеале должно быть введенным экземпляром зависимости * вашего класса BarcodeGenerator
(или кем бы то ни было).Если вы не используете внедрение зависимостей, вы можете создать новый экземпляр напрямую, указав каждый раз шрифт и т. Д. - это не так приятно, но все должно работать нормально.