如何在经典的asp,.NET和javascript之间共享变量值?

时间:2008-09-22 11:04:33

标签: asp.net session asp-classic httphandler

我在.NET C#中创建了一个IHttpHandler,它将html片段返回到经典的asp页面。

经典的asp页面通过使用vbscript中的IHttpHandler或JavaScript中的Ajax调用的基本http请求与ServerXMLHTTP进行通信。

现在,我需要一种方法来共享我在vbscript中的变量,但不能在.NET应用程序的javascript中共享。

第一位,在经典asp和.net之间共享变量不是问题,因为我可以将它添加到http请求中。因为该变量在javascript中不可用,但在这种情况下我不能这样做。

我有一个想法,我可以将变量缓存在.NET应用程序中,并使用缓存版本进行javascript调用。但为了实现这一点,我需要一种方法来唯一地识别.NET中的“客户端”......

我尝试将System.Web.SessionState.IRequiresSessionState添加到我的HttpHandler并使用SessionId,但这不起作用,因为每次调用HttpHandler似乎都会获得一个新ID。

我是否正确思考?我有什么选择?

4 个答案:

答案 0 :(得分:3)

你可以将你的价值放在一个cookie中,然后你可以用javascript阅读并对它做任何事情,包括将它发送到.net应用程序的请求......

答案 1 :(得分:0)

如何在页面上设置一个隐藏变量,您可以在其中存储asp页面的服务器端vb脚本中的变量值。

然后,您可以使用Javascript查询此变量,以通过您的ajax调用发送到Asp.Net处理程序。

答案 2 :(得分:0)

最后,我解决问题的方法如下:

  1. 我将变量与正常的ws请求一起发送到我的web服务
  2. 我将变量值存储在webservice的哈希表中,并将hashkey返回给隐藏的html对象中的客户端(我使用了头<meta>元素)
  3. 在javascript中,我读取了该哈希值,并将其作为标头值附加到http-request。
  4. 当webservice看到该hashkey时,他在持久性哈希表中查找相应的变量值。
  5. 可能不是最好的解决方案但似乎在我的情况下运作良好......

答案 3 :(得分:0)

我也推荐一个cookie。您也可以从数据库加载该值,但这样做有点过分。