0

私はaspxページを持っています:

<%@ Page Language="C#" %>
<%

    HttpContext.Current.Session["UserID"] = "ABC1";
    Response.Write(HttpContext.Current.Session["UserID"].ToString());

%>
<script>
    var parameters = { OpenURL: "test.pdf", java_arguments: "-Xmx256m" };
  var attributes = {archive:"webviewerS.jar,jPDFViewerS.jar", code:"qoppa.webViewer.PDFWebViewer", width:"100%", Height:"95%"};
  var version = "1.6.0";

  deployJava.runApplet(attributes, parameters, version);
</script>

ページが読み込まれ、セッション変数が作成されました。また、pdfのhttpリクエストを処理するカスタムhttphandlerも追加しました。すべてのユーザーが、.pdfでパスを入力するとクラスが実行されます。

response.Cookies["UserID"].HttpOnly = false;
if (HttpContext.Current.Session["UserID"] != null)
{

        response.ContentType = "application/pdf";
        response.WriteFile(request.PhysicalPath);

}
else
{
    response.Write("access denied");
}

テストするこのスクリプトの主な目的は、そのaspxページ内のJavaアプレットを使用することによってのみPDFを表示できるようにすることです。しかし最後に、

var parameters = {OpenURL: " test.pdf "、java_arguments: "-Xmx256m"};

pdfをロードするJavaアプレット要求がありますが、セッションはhttphandlerで検出できなかったようですが、.aspxページをロードした後に.pdfパスを直接入力すると、上記のコードは成功します。

アプレットがpdfファイルを要求した場合、seesion ["UserID"]の結果はnullになりますが、なぜセッション値を検出できないのでしょうか。

4

1 に答える 1

0

FiddlerCharlesなどを使用して、ブラウザからサーバーに戻るアプレット リクエストを確認しましたか?

通常、サーバーの構成に応じて、セッションを維持するために呼び出される CookieASP.NET_SessionIdまたは場合によってはクエリ文字列パラメーターが存在します。sessionId

ASP.NET セッション状態の概要から

デフォルトでは、SessionID 値は Cookie に保存されます。ただし、「cookieless」セッションの URL に SessionID 値を格納するようにアプリケーションを構成することもできます。

Java アプレットはおそらくこれを要求に含めないため、サーバーは別のセッションであると認識します。

于 2013-01-10T01:41:17.377 に答える