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())
Другие вопросы по тегам