【问题标题】:Invalid Cast Exception calling SqlMembershipProvider GetUser调用 SqlMembershipProvider GetUser 的无效转换异常
【发布时间】:2011-04-13 14:06:33
【问题描述】:

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

我可以登录并浏览页面一切正常,但比随机点,繁荣,它废话,并抛出异常:

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

查看堆栈跟踪,您可以清楚地看到它是由 Membership Provider 引起的:

[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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您的某些用户是否有可能使用全数字作为用户名?可能是自动类型在途中某处装箱错误。

      【讨论】:

      • 不,在测试/开发过程中,我目前只有两个用户帐户,它们都是字母加和下划线。
      • 当我从 default.aspx 中取出所有代码时,我也遇到了同样的问题。这似乎是由会员提供者引起的,这有点令人担忧。问题是它看起来随机且不一致,这使得很难确定原因。我所知道的是唯一一致的因素是异常似乎是由会员提供者本身抛出的。
      • @Ira - 这不是您的堆栈跟踪显示的内容。请显示发送到db服务器的SQL或服务器上SP的内容。
      • 不,你是对的,该堆栈跟踪是从其中包含代码的页面中获取的。但是,后来我尝试将代码取出,并且出现了同样的问题。这是来自 web.config 文件中定义的登录页面的重定向,该文件将身份验证模式定义为 mode="Forms" 并使用 限制对所有其他页面的访问。我已经好几天没有看到异常了,但如果它再次出现,我会发布 SQL。感谢您的帮助。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-10
      • 1970-01-01
      • 1970-01-01
      • 2010-12-26
      • 2012-02-20
      相关资源
      最近更新 更多