2010-11-17 72 views
0

我有一个在IIS中的global.asa内运行的ActiveX控件。该控件具有一些BSTR属性,但在服务器的VBScript中,它们似乎有些不正常,就好像VBScript不理解它们是字符串一样。可以检索字符串属性,并将其分配给另一个变量,但不能串联两个字符串。结果可以被描述为未定义的,但实际上是串联的第一个参数。相同的代码在早期版本的IIS中运行良好,但在Windows Server上不再运行了。发生了什么事以及如何解决这个问题?无法在global.asa中读取字符串

编辑:我看到的东西很简单,但很神秘。我可能不看正确的地方。 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(); 
} 
+0

如果您使用Global.asa的适当片段和失败的VBScript代码 – AnthonyWJones 2010-11-19 09:35:52

+0

可能会有所帮助我已更新问题。 – Dialecticus 2010-11-19 11:16:52

+1

我不知道你是复制/粘贴的,但是Dim是resultString,你使用的变量是resutString。你在做global.asa的哪个部分? sessionstart,applicationstart,...? – 2011-05-10 13:46:22

回答

0

由于波多黎各在评论中提及了,有可能发布的问题时,刚刚被复制/粘贴错误错字,但仍熊看在:

Dim resultString 
resutString = MyControl.String1 & MyControl.String2 

您正在将字符串复制到拼写错误的变量......它可能是这样简单。

如果不解决这个问题,你可能会想尝试强行转换值的字符串,如:

resultString = cStr(MyControl.String1) & cStr(MyControl.String2) 

或者

resultString = cStr(MyControl.String1 & MyControl.String2) 

一方的优点可以在别处讨论,我不知道你会在两者之间看到明显的表现差异。这是另一个问题,一旦它正在工作。

+0

我以我的同事的名义提出了这个问题。我不知道这个问题的当前状态,但是当新的数据可用时我会更新这个问题。希望在周一之后。感谢您的努力。 – Dialecticus 2011-05-12 21:35:56