session,httphandler,java applet一起工作

时间:2013-01-10 01:30:32

标签: asp.net applet httphandler

我有一个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>

页面加载并创建了一个会话变量,我还添加了一个自定义的httphandler来处理pdf的http请求,每个用户键入带.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 applet来查看pdf。但最后,

var parameters = {OpenURL:“ test.pdf ”,java_arguments:“ - Xmx256m”};

加载pdf的java applet请求,但似乎在httphandler上无法检测到会话,但如果我在加载后直接输入.pdf路径,则上述代码成功。 aspx页面。

如果applet请求pdf文件,那么seesion [“UserID”]的结果将为null,为什么它无法检测到会话值?

1 个答案:

答案 0 :(得分:0)

您是否尝试使用FiddlerCharles之类的内容来查看从浏览器返回服务器的applet请求?

通常会有一个名为ASP.NET_SessionId的cookie,或者可能是名为sessionId的查询字符串参数,以根据服务器配置维护会话。

来自ASP.NET Session State Overview

  

默认情况下,SessionID值存储在cookie中。但是,你可以   还配置应用程序以在URL中存储SessionID值   用于“无cookie”会话。

Java applet可能不包含在请求中,因此服务器认为它是一个不同的会话。