2010-11-17 97 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