2009-06-16 2 views
0

私はいつもサーバ側のコードは要求しているブラウザの影響を受けていないと思っていますが、例外を見つけました:WEIRDESTエラー:ASP.NETとFirefox?

私はボタンをクリックするとボタンのCSSクラスそれに関連して)、新しいデータでGridViewを再バインドします。この機能は次のとおりです。

Private Sub lbViewUnUsed_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lbViewUnUsed.Click 
    lbViewUsed.CssClass = "button small" 
    lbViewUnUsed.CssClass = "button small selected" 
    BindUsage(UsageBinding.UnUsed) 
End Sub 

IEでは、これは完全に機能します。しかし、Firefoxでは、BindUsage()の機能が途中で停止し、何も達成されません!私の不満の中で、BindUsage()にコードの各行の後にDebug.Assert()というステートメントを挿入して、何が起こっていたのか確かめてください。そして、確かに、この機能はFirefoxだけでは完全には行きませんでした。

BindUsage()機能は(まだでデバッグアサーションで)これです:

Private Sub BindUsage(ByVal bindWhat As UsageBinding) 
    Debug.Assert(False, 1) 

    If bindWhat = UsageBinding.Used Then 
     gvUsage.DataSource = sUser.GetWordsMarkedWithUsage(True) 
     gvUsage.Columns(0).Visible = False 'hide button column' 
    Else 
     Debug.Assert(False, 2) 

     gvUsage.DataSource = sUser.GetWordsMarkedWithUsage(False) 
     Debug.Assert(False, 3) 

     Dim userInfo As UserAccount.LoginInfo = UserAccount.GetUserLoginInfo 
     Debug.Assert(False, 4) 

     Dim showUsedButton As Boolean 
     Debug.Assert(False, 5) 

     showUsedButton = (userInfo.UserName.ToLowerInvariant = sUser.UserName.ToLowerInvariant) 
         Debug.Assert(False, 6) 

     gvUsage.Columns(0).Visible = showUsedButton 'show button column' 
     Debug.Assert(False, 7) 

    End If 
    Debug.Assert(False, 8) 

    gvUsage.DataBind() 
    Debug.Assert(False, 9) 

End Sub 

上記の機能は、Firefoxで5を過ぎてそれを作ることはありません。私は、showUsedButton変数の割り当てに何らかの問題があると推測していますが、どうなるか分かりません。なぜこれはFirefoxでのみ失敗しますが、他のブラウザでは失敗しますこれは特にサーバー上で発生していますか?

+0

どのようなエラーメッセージが表示されますか? – JasonS

+0

それは問題です、エラーメッセージはありません...ただ何も起こりません!デバッグアサーション6+は表示されません! – Jason

+0

また、呼び出し元関数(ボタンクリック)からのCSS割り当ては、呼び出されても実際には発生しません。 – Jason

答えて

4

それは、サーバー上で起こっていますが、クライアントによって生成されたデータを取得している:

UserAccount.GetUserLoginInfo

を私はあなたの格納されたデータを確認し、それに違うものを見るだろうクライアントアプリケーションに基づいて、どのように処理されるかを確認します。

+0

これは修正されました...ユーザーがログインしていないかどうかをチェックしていた場合、これは何も返されていなかったので、失敗したようです。私は、ユーザーが認証されていないか確認する必要がありました。この答えで私を正しい軌道に乗せてくれてありがとう! – Jason

+3

エラーの詳細が表示されないという事実を修正しましたか?それは私にとってより深刻な問題のように思えます。次回に何か悪いことが起こると、あなたはAssertsを再び入れてくれるでしょう。 –

+0

@jon - 詳細はありません...私はエラーメッセージを受け取っていない、私は期待された動作を受信して​​いなかった。それは何もしなかっただけです...それらの詳細をどのように取得するのですか? – Jason

1

例外がスローされているかどうかは間違いありませんか?そうでない場合は、他に何かをする前に修正してください。それは、ブラウザによって送信され、どのように、そして明確にブラウザが動作

  • を変更することができ、私はASP.NETを信じているどのようなデータに依存する場合

    • :それはブラウザ固有のかもしれない理由については

      ブラウザ固有の方法でレンダリングします。コードがレンダリングロジックに触れている場合、ユーザーエージェントに応じて異なる動作をしている可能性があります。

  • 3

    UserAccount.GetUserLoginInfoは正確に何をしますか?まあ、それは推測のビットですが、...

    私が推測しなければならないのであれば、ブラウザ固有の何かをしようとします。たとえば、クライアントからCookieを試して読み込むことができますか?そうであれば、私の次の推測はuserInfoであるか、またはuserInfo.UserNameがヌルであるため、NullReferenceExceptionがスローされます。

    IEはCookieを受け入れることができ、Firefoxはそうでない可能性があります。したがってIEではエラーは発生しませんが、Firefoxでのみ発生します。 もう一度、これは推測ですが、私はVB.NETで強くなく、そのUserAccountクラスが何であるか分かりません。多分あなたがerrormessageを使うとしたら、もっと意味するかもしれません。

    +0

    あなたの本能は正しい。これありがとう! – Jason