0

次のコードを使用して、ASP.NET Web アプリケーションでオンザフライで画像を描画しています。

Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
    Dim js As New JavaScriptSerializer
    Dim ai As absencestruct = js.Deserialize(Of absencestruct)(CStr(context.Request.QueryString.Item("json")))

    'Ensure font is readable (half height of block or 12px whichever is smaller)
    Dim f As Font = New Font("Calibri", Math.Min(CInt(CDbl(ai.size.height) / 2.5), 12), GraphicsUnit.Pixel)

    Dim img As New Bitmap(CInt(ai.size.width), CInt(ai.size.height))
    Dim g As Graphics = Graphics.FromImage(img)

    g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality

    If ai.textStyle <> textStyleEnum.invisible Then
        g.Clear(Color.White)
    End If

    Dim r As New Rectangle(1, 1, CInt(ai.size.width) - 1, CInt(ai.size.height) - 1)

    r = New Rectangle(r.Left + 2, r.Top + 2, r.Width - 4, r.Height - 4)

    drawAbsence(ai, True, r, g)
    If ai.abs2.type <> AbsenceItem.halfDays.Errored AndAlso ai.drawStyle = AbsenceItem.drawStyle.orphan Then
        drawAbsence(ai, False, r, g)
    End If

    Dim s As SizeF = g.MeasureString(ai.day.ToString, f)
    Dim br As SolidBrush = CType(Brushes.Black, SolidBrush)
    If ai.textStyle = textStyleEnum.otherMonth Then br = CType(Brushes.Gray, SolidBrush)

    If ai.textStyle <> textStyleEnum.invisible Then
        g.DrawString(ai.day.ToString, f, br, New Point(CInt((CDbl(ai.size.width) / 2) - CInt(s.Width / 2)), CInt((CDbl(ai.size.height) / 2) - CInt(s.Height / 2))))
    End If

    context.Response.ContentType = "image/png"
    img.Save(context.Response.OutputStream, ImageFormat.Png)
    img.Dispose()
End Sub

以前はこれでまったく問題なく動作していましたが、突然、これが到達するとすぐにエラーになります。

img.dispose

NotSupportedException 「指定されたメソッドはサポートされていません」という例外が発生します

何が起こるかを確認するために破棄呼び出しを削除しました...その時点で、まったく同じエラーが発生します

End Sub

これはほとんど不可能だと思っていたので、PC と Visual Studio 2012 の両方を再起動しようとしましたが、効果はありませんでした。

エラーをスキップすると、画像は完全に正常に機能することに注意してください。この結果、画像が失敗する可能性はありますが、私のクライアントはあまり感銘を受けないと確信しています.

4

1 に答える 1