问题标签 [jscript.net]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
2395 浏览

c# - .Net/C# 中的 Autoproxy 配置脚本解析

为了让我的应用程序(.Net 1.1)使用系统配置的代理服务器(通过 proxy.pac 脚本),我使用了对 WinHTTP 函数 WinHttpGetProxyForUrl 的互操作调用,传递了我从注册表中获得的 proxy.pac url。

不幸的是,我遇到了一个部署场景,这不起作用,因为 proxy.pac 文件本地部署在用户的硬盘上,并且 url 是“file://C://xxxx”

正如 WinHttpGetProxyForUrl 文档中明确指出的那样,它仅适用于 http 和 https 方案,因此文件://失败

我正在考虑解决这个问题的 2 个“丑陋”解决方案(pac 文件是 javascript):

  1. 创建一个单独的 JScript.NET 项目,具有单个静态方法 Eval(string) 的单个类,并使用它在运行时评估从 pac 文件中读取的函数

  2. 在运行时构建 JScript.NET 程序集并加载它。

由于这些解决方案真的很丑:),有人知道更好的方法吗?是否有可以通过互操作使用的 Windows 功能?

如果没有,你们对上述两种解决方案有什么看法——你更喜欢哪一种?

0 投票
3 回答
670 浏览

.net - 在 .NET 桌面和浏览器之间共享 JavaScript 代码

我有一组核心、复杂的 JavaScript 数据结构/类,我希望它们能够在浏览器中作为 JavaScript 使用,并在带有 .NET 3.5 的桌面上运行。是否可以将 Web 友好的 JavaScript 编译成我的 C# 代码可以访问的程序集?

  • 托管 JScript - 是否有可用的编译器来生成可以在桌面 CLR 上运行的东西?我只看到了 Silverlight 运行时的已发布示例。听起来它不像在桌面上正式可用,但我愿意尝试一些不那么幸运的东西,比如我可以用 Silverlight 工具编译然后在桌面 CLR 上运行吗?
  • JScript .NET - 听起来它有足够的自定义语言扩展,在浏览器中运行相同的代码真的很难,但也许有办法......?

如果这些都不起作用,我想我的选择是:

  • 有一个 C# 版本和一个 JavaScript 版本,我必须保持同步(糟糕)。
  • 编写一个在编译时运行的预处理器,将我的 JavaScript 转换为 JScript .NET 或我可以编译为 .NET 程序集的东西。
  • Script#:看起来这会将 C# 代码转换为 JavaScript 代码。不太好,因为我希望能够直接大量调整 JavaScript 代码,但它可以工作。

任何人都成功地使用了这些选项?

0 投票
1 回答
246 浏览

visual-studio - JScript.Net 编译器错误

  1. 我创建了一个包含 print("Hello World!"); 的 .js 文件。
  2. 我将它保存为 hello.js
  3. 我打开 Visual Studio 2008 命令提示符
  4. jsc + 输入
  5. jsc \out:hello.exe C:\path\to\my\file.js + Enter

我收到 E_ACCESSDENIED 错误:可能是什么?

谢谢!

0 投票
1 回答
241 浏览

wcf - 使用 JScript.NET 创建 WCF 服务?

我正在尝试在 JScript.NET 中创建 WCF 服务。(我知道,我应该用 C# 或 VB.NET 来做,但请幽默。)以前有人做过吗?

我可以创建 .asmx Web 服务,但我不确定如何修改 web.config 以使 .svc 文件正常工作——我需要预编译吗?

另外,我(现在)正在尝试使用内联代码来做到这一点——这是否可行,或者如果我手动操作,我真的需要一个代码隐藏......

谢谢!

0 投票
1 回答
7634 浏览

c# - 创建JavascriptConverter时,如何返回数组?

我正在尝试编写一个自定义 JavascriptConverter 以与我正在编写的 WebService 一起使用。我必须编写一个自定义转换器,因为 Microsoft.JScript.JSObject 不支持 IDictionary,所以它被视为一个数组。我的这部分工作正常。但是,由于 Microsoft.JScript.ArrayObject 是 Microsoft.JScript.JSObject 的子类,因此它也尝试使用相同的方法对其进行转换。如何返回将被序列化为 JSON 数组的内容?我必须返回一个 IDictionary,它将成为一个 JSON 对象。有什么我想念的吗?

具体来说,我如何从 Serialize 返回一些被序列化为数组而不是对象的东西。

谢谢!

编辑:

我想我需要更具体一些。

Microsoft.JScript.JSObject 实现 IEnumerable,但不是 IDictionary。Microsoft.JScript.ArrayObject 是 Microsoft.JScript.JSObject 的子类。如果我在 JScript.NET 中创建一个 .asmx,当我尝试返回一个 JSObject 时,它会被序列化为一个数组(因为它实现了 IEnumerable,而不是 IDictionary),这意味着只有对象中的属性名称会被序列化。当然,如果我交回一个 ArrayObject,它就可以正常工作,并将其序列化为一个数组。

所以,我实现了一个JavascriptConverter的子类,它说它的SupportedType是Microsoft.JScript.JSObject。现在,JSObjects 被正确序列化了。但是,由于 ArrayObject 是 JSObject 的子类,JavascriptSerializer 不再负责序列化 ArrayObjects 本身,而是将其交给 JSObject 序列化器。问题是,我的自定义序列化程序如何返回 JavaScriptSerializer 将正确视为数组而不是对象的东西——Serialize 被迫返回一个 IDictionary,并且它被序列化为一个对象,而不是一个数组。

这个问题更有意义吗?

顺便说一句:我已经查看了 WCF 和 C#,但是 DataContractJsonSerializer 输出完全没用,除非您只使用 WCF 客户端访问它;我打算使用 jQuery 来检索它。

回答:

我终于明白了 bdukes 想说什么,而且它有效!您需要在返回字典时告诉它它是一个数组(尽管这不适用于顶级数组)。这是Serialize我要编写的函数:

0 投票
2 回答
1162 浏览

c# - .Net Scripting Engine (C#) - .Net 语言是否有某种“头文件”或“dll 引用文件”?

我正在用 C# 制作一个小型脚本引擎,我想知道是否有某种#compiler 指令或某种其他类似头文件的文件我可以用我的脚本文件编译以定义我的脚本文件引用的托管 Dll?

我希望能够消除这行代码:

将这些信息放在我的脚本中。问题是我不一定提前知道脚本将引用什么 .dll。我目前的解决方案是解析一个看起来像这样的自定义“script.cs.refs”文件:有关找出 Visual Studio 将您对 dll 的引用存储在何处以及是否必须在单独的文件中定义它的任何帮助,如果有我应该使用的标准化格式,我可以将其加载到告诉它此信息的编译器中,将是非常感激!

0 投票
7 回答
2359 浏览

mono - JScript.NET 可以用于编写 .NET 应用程序的脚本吗?

由于 MS似乎已经在服务器端(ASP.NET Futures)和客户端(Silverlight)的最新 DLR 中杀死了托管 JavaScript,是否有人成功使用过时的 API 来允许使用 JScript.NET 对其应用程序对象进行脚本编写和/或可以解释如何做到这一点?如果 Mono/JScript 解决方案稳定且满足以下要求,它也可能是可接受的。

我们有兴趣从使用 Microsoft JScript 引擎和 ActiveScript API 的脚本宿主升级到具有更高性能和更容易扩展的东西。我们有超过 16,000 个服务器端脚本,源代码超过 42MB,因此重写为另一种脚本语言是不可能的。

我们的具体要求是:

  • 性能明显优于 Microsoft JScript (ActiveScript) 引擎
    • 更好的运行时性能和/或
    • 保留预解析或编译的脚本(不要在每次运行时重新解析)
    • 较低或相等的内存消耗
  • 完全兼容 ECMA-262 ECMAScript
    • 可以容忍一点移植
  • 将自定义对象注入脚本命名空间
    • .NET 对象(不是硬性要求)
    • COM 对象或包装在 .NET 中的 COM 对象
  • 从脚本实例化 COM 对象
    • à la "new ActiveXObject(progid)"
    • 考虑到前面的低优先级
  • 包含文件
    • 将“帮助脚本”预加载到脚本执行上下文中
    • “包含”函数或语句(易于创建,鉴于上述情况)
  • 支持全局范围内的代码
    • 在全局范围内执行代码
    • 保留在全局范围内初始化的值
    • 从全局范围中提取值
    • 在全局范围内注入和替换值
  • 调用脚本定义的函数
    • 带参数
    • 并可以访问先前初始化的全局范围
  • 源码级调试
  • 商业或开源支持
  • 过时的 API
0 投票
1 回答
894 浏览

.net - 在 Fiddler 的 CustomRules.js 中包含和持久化存储

我已经使用 Fiddler 几天了,用我自己的逻辑扩展了 CustomRules.js。但是,该文件变得非常重(开始时非常重)。我对 .NET 或 JScript 不是很熟悉,但我希望能够将 CustomRules.js 拆分为几个较小的文件,我可以将它们包含在 CustomRules.js 中。这可能吗?

我还发现需要跨请求进行某种持久存储。有没有一种简单的方法可以在 CustomRules.js 中存储值以供以后的请求使用?

0 投票
2 回答
1082 浏览

c# - 如何将 Javascript AES 库移植到 .NET 以确保互操作性?

背景

我有在客户端使用 javascript 加密的数据,需要在服务器端解密。

据我所知,我使用的 javascript AES 库不与 C# Rijndael 库互操作。

因此,我基本上只能在 C# 中实现 javascript AES 以供使用。

我将尝试使用 jsc.exe 将 javascript 编译成 dll 并查看反射器是否可以为我节省一些时间。

我知道 jscript 与 javascript 不同,但我希望我能摆脱一些非常接近的东西,而只需手动进行修饰。

问题:

当我使用 JSC 编译 javascript 时,出现以下错误:

错误 JS1234:库中只允许类型和包定义

有问题的行是以下代码行中的第一行:

完整的源代码可以在这里找到

我不确定问题是什么。我也愿意接受有关如何在 Javascript 和 C# 之间加密/解密数据的建议。

0 投票
3 回答
128 浏览

c# - 为什么JScript中同名的变量和函数会发生冲突?

我有一个名为 age 的变量和一个名为 AGE 的函数。忽略我目前遇到的 JScript 不区分大小写的问题,即 age(dob) 和 AGE(dob) 都可以工作......

为什么 JScript 尝试将年龄变量用作函数?我最好的猜测是 jScript 将函数声明视为声明和表达式......

我在 C# 应用程序中使用 ScriptControlClass,并使用 JScript 作为一种简单的嵌入式语言,为我的用户群提供一些简单中复杂度的表达式......