0

次のようなパラメーターとして HTML を受け取る WebMethod があります。

Public Function ConvertHtmlToPdfListAnswer(ByVal dokument As Dokument) As Byte()

この HTML では、たとえばユーザー署名へのパスは次のようになります。

Handlers/SzablonyListImgHandler.ashx?usid=2006

私のハンドラーは次のように始まります:

Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest

コンテキストからパラメーターを取得し、データベースのクエリを作成し、次のようなストリーム出力を返します。

If Not String.IsNullOrEmpty(context.Request.QueryString("usid")) Then
...
...
streamOut.WriteTo(context.Response.OutputStream)

私の問題は、一度だけ起動することです...つまり、サービスを再度呼び出すと、ハンドラーに入らず、デバッガービューでHTMLをチェックすると、すでに画像が表示されます。したがって、ユーザーがデータベースで署名を変更しても、サービス メソッドは以前のものを返します...何らかのキャッシュの問題である可能性があると思います...何かアイデアはありますか??

4

1 に答える 1

1

はい、これはキャッシュの問題です。ブラウザーはハンドラーの結果をキャッシュし、ハンドラーを再度呼び出すと、ブラウザーはキャッシュされた結果を返します。

キャッシュを防ぐには、ストリームを書き込む前にハンドラーでこれを設定する必要がありますcontext.Response.OutputStream

context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
于 2010-11-05T07:54:25.713 に答える