Javascript 我可以在脉轮上运行ASP Classic吗?

Javascript 我可以在脉轮上运行ASP Classic吗?,javascript,asp-classic,chakra,Javascript,Asp Classic,Chakra,Chakra是微软打包到IE9中的更新Javascript引擎的代码名 可以使用JScript作为ASP经典页面的开发语言。这通常在内置于Windows的JScript引擎上运行,自NT4 Option Pack(c.1996)以来,所有版本的Windows中都存在这一点 问题是,为了ASP的目的,可以在脉轮引擎上运行Javascript吗?显然不行 我尝试使用以下简单的示例脚本: <%@ language="Javascript" %> <script language="

Chakra是微软打包到IE9中的更新Javascript引擎的代码名

可以使用JScript作为ASP经典页面的开发语言。这通常在内置于Windows的JScript引擎上运行,自NT4 Option Pack(c.1996)以来,所有版本的Windows中都存在这一点

问题是,为了ASP的目的,可以在脉轮引擎上运行Javascript吗?

显然不行

我尝试使用以下简单的示例脚本:

<%@ language="Javascript" %>

<script language="Javascript" runat="server" src='json2.js'></script>

<script language="Javascript" runat="server">

(function() {

    scriptEngineInfo = function () {
        var s = {
            engine : ScriptEngine(),
            version: {
                major: ScriptEngineMajorVersion(),
                minor:ScriptEngineMinorVersion()
            },
            build: ScriptEngineBuildVersion()
        };
        return s;
    }

}());

var x = scriptEngineInfo();
x.Timestamp = (new Date()).valueOf();

Response.Write (JSON.stringify(x));

</script>
当我按照中的建议操作并将Chakra配置为命名脚本引擎,然后将上述脚本中出现的三个“Javascript”替换为“Chakra”,然后运行“页面”,我得到了正确的预期结果:

{
  "engine": "JScript",
  "version": {
    "major": 9,
    "minor": 0
  },
  "build": 16441,
  "Timestamp": 1331867213695
}
9的主要版本显示我正在使用脉轮

但是如果我再次请求相同的脚本,它将失败,并出现500个错误,说明:

无法从已释放的脚本执行代码

如果我再试一次,它会给我

外部对象中发生可捕获错误(C0000005)。脚本无法继续运行

如果我再试一次,我会得到:

ScriptEngine在“CActiveScriptEngine::ReuseeEngine()”的“IActiveScript::GetScriptState()”中引发异常“C000005”

这个脚本在我的机器上是可重复的

由此我得出结论,脉轮并不是为ASP环境设计的

显然不是

我尝试使用以下简单的示例脚本:

<%@ language="Javascript" %>

<script language="Javascript" runat="server" src='json2.js'></script>

<script language="Javascript" runat="server">

(function() {

    scriptEngineInfo = function () {
        var s = {
            engine : ScriptEngine(),
            version: {
                major: ScriptEngineMajorVersion(),
                minor:ScriptEngineMinorVersion()
            },
            build: ScriptEngineBuildVersion()
        };
        return s;
    }

}());

var x = scriptEngineInfo();
x.Timestamp = (new Date()).valueOf();

Response.Write (JSON.stringify(x));

</script>
当我按照中的建议操作并将Chakra配置为命名脚本引擎,然后将上述脚本中出现的三个“Javascript”替换为“Chakra”,然后运行“页面”,我得到了正确的预期结果:

{
  "engine": "JScript",
  "version": {
    "major": 9,
    "minor": 0
  },
  "build": 16441,
  "Timestamp": 1331867213695
}
9的主要版本显示我正在使用脉轮

但是如果我再次请求相同的脚本,它将失败,并出现500个错误,说明:

无法从已释放的脚本执行代码

如果我再试一次,它会给我

外部对象中发生可捕获错误(C0000005)。脚本无法继续运行

如果我再试一次,我会得到:

ScriptEngine在“CActiveScriptEngine::ReuseeEngine()”的“IActiveScript::GetScriptState()”中引发异常“C000005”

这个脚本在我的机器上是可重复的


由此我得出结论,脉轮并不是为ASP环境设计的

活动脚本体系结构允许脚本主机(即ASP.dll)缓存脚本引擎提供的经过某种方式解析的interims代码。ASP大量使用这一功能,因此速度非常快。我们正在运行巨大的脚本(1000多行代码),第一个调用在代码实际执行之前需要几秒钟,而进一步的调用在1/10秒之后已经执行了代码

很可能是由于新的JIT编译器,脚本接口没有得到很好的服务,ASP变得混乱。给定的WSH测试用例不存在此问题,因为WSH不使用缓存,因为它不组织要执行的代码

如果ASP缓存被禁用,看看Chakra 9引擎是否工作会很有趣-我现在无法测试它,我假设对于像我们这样的大型脚本,它不会带来预期的效果。但对于较小的脚本,值得一试

在安装IE9时,安装程序还部署了一个旧的JavaScript 5.8引擎(build 16982),它安装在IE8附带的引擎(17562)之上。我不知道这种“降级”的意义,但最好不要在运行经典ASP的服务器上安装IE9


也许IE10的脉轮将提供更好的ActiveScripting架构支持。让我们拭目以待。

活动脚本体系结构允许脚本主机(即ASP.dll)缓存脚本引擎以某种方式解析的interims代码。ASP大量使用这一功能,因此速度非常快。我们正在运行巨大的脚本(1000多行代码),第一个调用在代码实际执行之前需要几秒钟,而进一步的调用在1/10秒之后已经执行了代码

很可能是由于新的JIT编译器,脚本接口没有得到很好的服务,ASP变得混乱。给定的WSH测试用例不存在此问题,因为WSH不使用缓存,因为它不组织要执行的代码

如果ASP缓存被禁用,看看Chakra 9引擎是否工作会很有趣-我现在无法测试它,我假设对于像我们这样的大型脚本,它不会带来预期的效果。但对于较小的脚本,值得一试

在安装IE9时,安装程序还部署了一个旧的JavaScript 5.8引擎(build 16982),它安装在IE8附带的引擎(17562)之上。我不知道这种“降级”的意义,但最好不要在运行经典ASP的服务器上安装IE9

也许IE10的脉轮将提供更好的ActiveScripting架构支持。希望如此