2011-12-31 151 views
0

我已經在IIS 7上爲Windows 7設置了一個本地服務器,用於我正在處理的傳統ASP VBS站點。iis7,classic asp;鍵入不匹配錯誤

一頁給我一個「類型不匹配」的錯誤。這並不與原服務器發生(Windows 2008中,IIS 7)

相關代碼:

if myRS("age") = 10 then 
  • 該字段的值是一個空字符串,用調試器檢查,也是錯誤狀態「字符串'
  • ASP文件,數據庫&數據是生產站點的精確副本
  • 在公共和本地站點都沒有錯誤恢復。
  • 生產服務器是MS-SQL 2008 R2 Web版本,其中本地版本是Express Edition。

現在我知道代碼是非常寫的。但是,本地服務器如何給出這樣的錯誤,而公共服務器不能呢?我認爲比較是通過變體類型進行的,因此應該自動評估子類型而不會有錯誤?

+0

myRS(「age」)的返回類型是否也是代碼工作的原始服務器上的空字符串? – 2011-12-31 15:03:23

+0

謝謝Darin,是的相同的數據,相同的代碼.. – SuperDuck 2011-12-31 18:46:27

回答

3

這很可能是由「..內部屬性..」問題引起的。我的猜測是你的生產服務器已經被「固定」來允許它,並且你的本地服務器設置從來沒有經歷過「..fix ..」這個需要。

你可以在這裏閱讀更多:

http://blogs.msdn.com/b/distributedservices/archive/2010/04/28/iis-intrinsic-properties-are-disabled-by-default-on-windows-2008-and-windows-2008-r2.aspx

您已經使用CreateObject創建您的記錄/ ADO對象,而這受到這種擔憂造成微軟將其禁用默認,出來的盒配置。

更多一點的位置:

http://support.microsoft.com/default.aspx?scid=kb;EN-US;287422

雖然..如果你只是想它的工作,那麼你就可以讀取第一個鏈接。

+0

這是它,謝謝nonym - )生產服務器是問題..非常糟糕的做法... – SuperDuck 2012-01-01 10:24:22

0

它可能是不同的數據源或驅動程序,因此看起來相同的數據稍有不同。

例如,它是一個空字符串,一個空字符串或null。

嘗試重寫,以便您可以記錄myRS(「年齡」)的值。

+0

謝謝你設拉子,我已經更新了更多細節的問題。 – SuperDuck 2011-12-31 18:47:13

0

我沒有意識到可以修改Nonym提到的服務器配置。我的建議只是更新代碼來顯式調用所需的屬性,而不是推斷它;例如,

更改此:

if myRS("age") = 10 then 

進入這個:

if myRS("age").Value = 10 then 

這還可以有其他的優勢,如果我沒有記錯,雖然沒有具體的例子來,此刻我想起爲什麼。祝你好運!

+0

是的,也不是一個好的設計,一個數字是在一個字符串字段中。但是這一次,這是我分配給的一個巨大的網站,這是非常嚴重的編碼。我會及時改寫它。但問題是生產和本地服務器顯示不同的行爲。 – SuperDuck 2012-01-05 07:47:35

0

似乎是一個ADO記錄集問題。嘗試輸出myRS(「age」)值,如果它沒有返回任何內容或錯誤,則嘗試更改連接字符串中的sql驅動程序,或者甚至可能使用CStr(myRS(「age」))= CStr(10)。