调用SqlMembershipProvider GetUser的无效Cast Exception

时间:2011-04-13 14:06:34

标签: asp.net sql sql-server .net-4.0 sqlmembershipprovider

我正在使用ASP.NET SqlMembershipProvider在Web应用程序上实现授权,但在调用GetUser方法时它会随机抛出无效的强制转换异常。

我可以登录,并且浏览页面都很好,但是在随机点上,繁荣,它会崩溃,并抛出异常:

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() +5002910
   System.Data.SqlClient.SqlDataReader.GetString(Int32 i) +55
   System.Web.Security.SqlMembershipProvider.GetUser(String username, Boolean userIsOnline) +1169
   System.Web.Security.Membership.GetUser(String username, Boolean userIsOnline) +63
   System.Web.Security.Membership.GetUser() +19
   _Default.LoadLeadOverview() in \\file1\default.aspx.vb:169
   _Default.Page_Load(Object sender, EventArgs e) in \\file1\default.aspx.vb:30
   System.Web.UI.Control.OnLoad(EventArgs e) +91
   System.Web.UI.Control.LoadRecursive() +74
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2207

我环顾四周,发现其他人有同样的问题,但没有解决方案。任何想法都会受到欢迎。

2 个答案:

答案 0 :(得分:1)

虽然我没有采取任何措施专门解决这个问题,但我在几周内没有看到它。回想起来,我在同一时间使用相同的帐户在多个浏览器中测试网站,登录和退出很多,这似乎是当问题出现的时候。现在所有的CSS和其他跨浏览器的东西已经解决了,我没有那么多地使用多个浏览器,而不是同时使用它似乎很好。

答案 1 :(得分:0)

您的某些用户是否可以将所有数字作为用户名?可能是自动类型在整个过程中某处出现了错误。