2009-10-13 5 views
0

정기적으로 변화 즉 InvalidCastException/ProviderException와 잘못된 캐스트 예외를 받고 있지만, 모두 메소드 호출에서 생성 : System.Web.Security.SqlRoleProvider.GetRolesForUser(String username)않고 ​​ProviderException : 고객의 거의 InvalidCastException이

다른 변화는 다음과 같습니다

예외 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

답변

0

는 오류 메시지가 문자열 유형과 그 캐스트가 실패했음을 정수 유형에서 (변환을 읽기) 캐스팅하려고 당신을 말하고있다. GetRolesForUser (String) 함수에서 발생했습니다. 따라서 문자열 대신 정수를 전달하면 잘못 파싱됩니다. 어느 쪽이든 우리는 더 많은 코드가 필요하다는 것을 확신합니다. 이게 도움이 되길 바란다.

문자열 패스가 필요한 항목에 정수를 지정할 때마다 먼저 toString() 함수를 호출해야합니다. 예를 들어 : 귀하의 회신을, 내가 올바른 매개 변수를 전달하는 사랑하지만 스택 추적에서와 같은 명백한 것 에 대한

GetRolesForUser(someInt32Var.toString()) 
+0

Shhnap 덕분에,이 방식의 ASP .NET이 내부적으로 회원을 처리 때문에 발생하는 것으로 보인다. 또한 흥미로운 점은이 오류는 너무 자주 발생하지 않기 때문에 하루에 한 번 또는 로그인 시도가있을 때마다 발생한다는 것입니다. 일관성있게 재생하기가 어렵고 수정하기가 더 까다 롭습니다. 이 메서드에 대한 호출이 발생할 때 발생하는 추가 정보 제공 Membership.GetUser (Login.UserName); –

관련 문제