我有一个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,为什么它无法检测到会话值?
答案 0 :(得分:0)
您是否尝试使用Fiddler或Charles之类的内容来查看从浏览器返回服务器的applet请求?
通常会有一个名为ASP.NET_SessionId
的cookie,或者可能是名为sessionId
的查询字符串参数,以根据服务器配置维护会话。
来自ASP.NET Session State Overview
默认情况下,SessionID值存储在cookie中。但是,你可以 还配置应用程序以在URL中存储SessionID值 用于“无cookie”会话。
Java applet可能不包含在请求中,因此服务器认为它是一个不同的会话。