私は最近、C# で aspx 動的画像ジェネレーターに取り組んでいます。これは、最も基本的には、"t" からクエリ文字列値を取得し、その文字列を画像に書き込み、JPG を返します。
ローカルでもテスト サーバーでも問題なく動作し、画像はすぐに返されました。
ただし、負荷分散されたライブ サーバーでは、正常に動作する場合があります。しかし、多くの場合、タイムアウトするか、画像を返すのに最大 1 分かかります。
サーバー オペレーターに問題の原因を尋ねる前に、自分のコードに問題を引き起こしている明らかな点があるかどうかをここで尋ねようと思いました。
以下は、ジェネレーターの非常に合理化されたバージョンです (まったく同じタイムアウトの問題もあります)。
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();
}