0

一部のクライアントは定期的に無効なキャスト例外を取得していますが、バリエーションはInvalidCastException/ProviderExceptionですが、どちらもメソッド呼び出しから生成されます。System.Web.Security.SqlRoleProvider.GetRolesForUser(String username)

他のバリエーションは次のとおりです。

例外の種類:InvalidCastException
例外メッセージ: 型のオブジェクトを型にキャストできませSystem.Int32System.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

4

1 に答える 1

0

このエラー メッセージは、整数型から文字列型にキャスト (読み取り変換) しようとしていて、そのキャストが成功しなかったことを示しています。これは GetRolesForUser(String) 関数で発生しました。そのため、文字列ではなく整数を渡している可能性があり、正しく解析されていません。いずれにせよ、確認するにはさらにコードが必要です。これが役立つことを願っています。

文字列パスを必要とするものに整数を渡すときはいつでも、最初に toString() 関数を呼び出すようにしてください。例えば:

GetRolesForUser(someInt32Var.toString())
于 2009-10-20T04:18:58.660 に答える