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

时间:2020-03-06 14:32:05  来源:igfitidea点击:

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

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

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

首先,在经典asp和.net之间共享变量不是问题,因为我可以将其添加到http请求中。因为该变量在javascript中不可用,但是在这种情况下我无法做到这一点。

我的想法是,我可以将变量缓存在.NET应用程序中,并将缓存的版本用于javascript调用。但是,为了使它起作用,我需要一种方法来唯一地标识.NET中的"客户端"。

我试图将System.Web.SessionState.IRequiresSessionState添加到我的HttpHandler中并使用SessionId,但这没有用,因为对HttpHandler的每次调用似乎都获得了一个新的ID。

我在想正确的方法吗?我在这里有什么选择?

解决方案

如何在页面上具有隐藏变量,我们可以在其中存储来自ASP页面的服务器端vb脚本的变量值。

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

我们可以将值放在Cookie中,然后可以使用javascript进行阅读并对其进行任何处理,包括将其发送到.net应用程序的请求中...

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

  • 我将变量与常规的ws请求一起发送到我的Web服务
  • 我将变量值存储在Web服务上的哈希表中,然后将哈希键返回给隐藏的html对象中的客户端(为此,我使用了head<meta>元素)
  • 在javascript中,我读取了该哈希值,并将其作为标头值添加到http-request。
  • 当Web服务看到该哈希键时,他将在持久哈希表中查找相应的变量值。

可能不是最好的解决方案,但就我而言似乎效果很好...