ProviderException:InvalidCastException

时间:2009-10-13 03:50:58

标签: .net sql sqlroleprovider

我们的客户中很少有人会定期收到无效的演员,但会有变化 即InvalidCastException / ProviderException,但两者均来自 方法调用:System.Web.Security.SqlRoleProvider.GetRolesForUser(String username)

另一个变体是:

  

例外类型:InvalidCastException
  异常消息:无法将System.Int32类型的对象强制转换为System.String类型。

我查看了应用程序事件日志,其中显示了:

Stack trace:
   at System.Web.Security.SqlRoleProvider.GetRolesForUser(String username)
   at System.Web.Security.RolePrincipal.IsInRole(String role)
   at System.Web.Configuration.AuthorizationRule.IsTheUserInAnyRole(StringCollection roles, IPrincipal principal)
   at System.Web.Configuration.AuthorizationRule.IsUserAllowed(IPrincipal user, String verb)
   at System.Web.Configuration.AuthorizationRuleCollection.IsUserAllowed(IPrincipal user, String verb)
   at System.Web.Security.UrlAuthorizationModule.OnEnter(Object source, EventArgs eventArgs)
   at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)*

有没有人遇到过这个问题,如果有的话,有什么问题?

由于

JS

1 个答案:

答案 0 :(得分:0)

错误消息告诉您正在尝试将(读取转换)从整数类型转换为字符串类型,并且该转换未成功。这发生在GetRolesForUser(String)函数中。所以也许你传递一个整数而不是一个字符串,它被错误地解析。无论哪种方式,我们都需要更多代码才能确定。我希望这会有所帮助。

尝试确保无论何时将整数赋予需要字符串传递的内容,首先要调用toString()函数。例如:

GetRolesForUser(someInt32Var.toString())