ProviderException: InvalidCastException - PullRequest
       22

ProviderException: InvalidCastException

0 голосов
/ 13 октября 2009

Мало кто из наших клиентов регулярно получает недопустимое исключение приведения, с вариациями то есть 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 голосов
/ 20 октября 2009

В сообщении об ошибке указывается, что вы пытаетесь привести (преобразовать чтение) из целочисленного типа к строковому типу и что приведение не было успешным. Это произошло в функции GetRolesForUser (String). Поэтому, возможно, вы передаете целое число вместо строки, и оно анализируется неправильно. В любом случае нам понадобится больше кода, чтобы быть уверенным. Надеюсь, это поможет.

Попробуйте убедиться, что всякий раз, когда вы даете целое число чему-то, что требует передачи строки, сначала вызывайте функцию toString (). Например:

GetRolesForUser(someInt32Var.toString())
...