我最近一直在用 C# 开发一个 aspx 动态图像生成器,它最基本的功能是从“t”中获取一个查询字符串值并将该字符串写入图像,然后返回一个 JPG。
它在本地和测试服务器上完美运行 - 图像立即返回。
但是当在负载平衡的实时服务器上时,有时它可以正常工作。但是通常它会超时/最多需要一分钟才能返回图像。
我想我会在这里询问我的代码中是否有任何明显的东西会导致问题,然后我转向服务器操作员询问为什么这不能正常工作。
下面是一个非常精简的生成器版本(也有完全相同的超时问题)
protected void Page_Load(object sender, EventArgs e)
{
// Set global stage dimensions
const int stageWidth = 500;
const int stageHeight = 200;
// Create Bitmap placeholder for new image
Bitmap createdImage = new Bitmap(stageWidth, stageHeight);
// Draw new blank image
Graphics imageCanvas = Graphics.FromImage(createdImage);
// Add text
if (!string.IsNullOrEmpty(Request.QueryString["t"]))
{
string imageText = Uri.UnescapeDataString(Request.QueryString["t"]).Trim();
Font font = new Font("Arial", 22);
imageCanvas.DrawString(imageText, font, Brushes.White, 0, 0);
}
// Save
MemoryStream memStream = new MemoryStream();
createdImage.Save(memStream, ImageFormat.Jpeg);
imageCanvas.Dispose();
createdImage.Dispose();
// Set filename / image format
Response.AppendHeader("content-disposition", "filename=MyImage");
Response.ContentType = "image/jpeg";
// Send output to client
memStream.WriteTo(Response.OutputStream);
memStream.Dispose();
Response.Flush();
}