为什么Cint(“1”)会失败?

时间:2009-01-24 11:03:12

标签: vb.net citrix

我正在尝试在Citrix环境中部署WinForms应用。它在其他物理机和虚拟机上可靠地工作了一段时间,但只有在Citrix桌面上运行应用程序时才会失败。

失败通常是我们在(SQL Server 2005)数据库中的通用设置表中将混合类型数据作为字符串,然后在运行时将它们转换为适当的类型。

例如,varchar(50)列中的数据库上有一个'1',它被读入,然后是

dim myNumericVariable as integer = Cint(dr.Item(columnName))

(其中dr是来自ADO.NET的DataRow)。

抛出异常中的消息说:

Conversion from string "1" to type 'integer' is not valid

这种故障发生在整个应用程序中,但仅限于Citrix环境中。在我们所有其他环境中,它运行良好,但我不知道它是Citrix的事实只是一个侥幸,还有其他一些潜在的原因。

这是一个VB.NET应用程序,.NET 2.0,同时具有Strict和Explicit,为x86编译。它适用于XP SP3,也适用于Windows 2003 Server x64。

我的智慧结束了 - 我看了一遍,并没有发现为什么我看到这种行为的暗示。我非常感谢你的建议。如果您需要有关环境或应用程序构建方式的更多信息,我将很乐意编辑该问题。提前谢谢..

2 个答案:

答案 0 :(得分:4)

这是known bug;希望他们能解决它。

答案 1 :(得分:0)

是的,我在32位Vista笔记本电脑上也没有看到任何错误,所以很难说。

也许你可以试试Integer.Parse()?

Dim yourVar as Integer = Integer.Parse(dr.Item("YourColName").toString())