【发布时间】:2010-11-17 12:29:09
【问题描述】:
我有一个在 IIS 的 global.asa 中运行的 ActiveX 控件。该控件具有一些 BSTR 属性,但在服务器的 VBScript 中,它们似乎格式不正确,好像 VBScript 不理解它们是字符串。可以检索字符串属性,也可以将其分配给另一个变量,但不能连接两个字符串。结果可以描述为未定义,但实际上是连接的第一个参数。相同的代码在早期版本的 IIS 中运行良好,但在 Windows Server 2008 2003 上不再运行。发生了什么,如何解决?
编辑:我看到的东西如此简单,却又如此神秘。我可能没看对地方。在 global.asa 这是代码:
Dim resultString
resutString = MyControl.String1 & MyControl.String2
任何其他解决方法也不起作用,例如首先将字符串分配给临时变量,或将字符串包装到 CStr() 中。在 ATL 项目中,这是代码(一些示例位):
[id(16), helpstring("property String1")] BSTR String1;
[id(17), helpstring("property String2")] BSTR String2;
...
DISP_PROPERTY_EX_ID(CMyControl, "String1", dispidString1, GetString1, SetString1, VT_BSTR)
DISP_PROPERTY_EX_ID(CMyControl, "String2", dispidString2, GetString2, SetString2, VT_BSTR)
...
BSTR CMyControl::GetString1(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CString strResult;
...
return strResult.AllocSysString();
}
【问题讨论】:
-
如果您展示了使用 Global.asa 的适当片段和失败的 VBScript 代码可能会有所帮助
-
我不知道您是否复制/粘贴,但 Dim 是 resultString,而您使用的变量是 resutString。您在 global.asa 的哪个部分执行此操作? sessionstart,applicationstart,...?
标签: iis asp-classic vbscript activex