我有一个在IIS中的global.asa内运行的ActiveX控件。该控件具有一些BSTR属性,但在服务器的VBScript中,它们似乎有点格式错误,就像VBScript不理解它们是字符串一样。可以检索字符串属性,并将其分配给另一个变量,但是不可能连接两个字符串。结果可以描述为undefined,但实际上是连接的第一个参数。在早期版本的IIS中,相同的代码运行良好,但在Windows Server 2008 2003上不再运行。发生了什么,以及如何解决它?
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();
}
答案 0 :(得分:0)
正如Rico在其中一条评论中提到的那样,在发布问题时可能只是一个错误的复制/粘贴错误,但仍然看着:
Dim resultString
resutString = MyControl.String1 & MyControl.String2
您正在将字符串复制到拼写错误的变量......可能就是这么简单。
如果这不能解决问题,您可能需要尝试强制将值转换为字符串,如:
resultString = cStr(MyControl.String1) & cStr(MyControl.String2)
或
resultString = cStr(MyControl.String1 & MyControl.String2)
任何一个的优点都可以在别处讨论,我不知道你会发现两者之间存在明显的性能差异。这是另一个问题,一旦它正在运作。