ProviderException: InvalidCastException
Немногие из наших клиентов регулярно получают недопустимые исключения приведения, с вариациями, т.е. 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 ответ
Сообщение об ошибке сообщает вам, что вы пытаетесь привести (преобразовать чтение) из целочисленного типа к строковому типу и что это преобразование не было успешным. Это произошло в функции GetRolesForUser(String). Поэтому, возможно, вы передаете целое число вместо строки, и оно анализируется неправильно. В любом случае нам понадобится больше кода, чтобы быть уверенным. Надеюсь, это поможет.
Попробуйте убедиться, что всякий раз, когда вы даете целое число чему-то, что требует передачи строки, сначала вызывайте функцию toString(). Например:
GetRolesForUser(someInt32Var.toString())