Asp.net会员错误

时间:2009-01-29 09:01:28

标签: asp.net casting asp.net-membership

我们有一个实时运行的业务系统,其中会不时出现错误。该错误是根据来自asp.net成员资格提供程序的堆栈跟踪。当前登录的用户似乎并不重要。据我所知,数据库中的asp.net成员资格表是可以的。

生成错误的代码行示例:

if (Membership.GetUser() != null)

错误说明:

Unable to cast object of type 'System.Int32' to type 'System.String'.

堆栈追踪:

[InvalidCastException: Unable to cast object of type 'System.Int32' to type 'System.String'.]
System.Data.SqlClient.SqlBuffer.get_String() +141
System.Data.SqlClient.SqlDataReader.GetString(Int32 i) +96
System.Web.Security.SqlMembershipProvider.GetNullableString(SqlDataReader reader, Int32 col) +35
System.Web.Security.SqlMembershipProvider.GetUser(String username, Boolean userIsOnline) +1110
System.Web.Security.Membership.GetUser(String username, Boolean userIsOnline) +82
System.Web.Security.Membership.GetUser() +19

有没有人知道出了什么问题?


更新:我们无法找到此错误的解决方案。但最终它消失了。

现在,当我们迁移到另一台服务器时,此错误完全削弱了我们的应用程序。我完全没有想法:(

1 个答案:

答案 0 :(得分:0)

在Membership.GetUser()调用周围放置一个try / catch块并记录用户名。您可以通过调用Membership.GetCurrentUserName()。

来获取用户名

如果您有用户名,这会导致问题,请查看SQL中的成员资格表并查看“注释”字段。我的猜测是,在评论字段中发生了一些有趣的事情 - 也许有一些奇怪的unicode字符有问题,或者可能是该字段中的数据太多等等。

另外,尝试在成员资格数据库上为遇到问题的用户调用dbo.aspnet_Membership_GetUserByName,看看会得到什么结果。

相关问题