2011-12-31 149 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)。