2009-07-30 6 views
0
foreach (string oName in oValues) 
{ 
    if (string.IsNullOrEmpty(Request.Form[oName])) 
    { 
     oCount += 1; 
    } 
} 
if (oCount == 0) 
{ 
    _clientID = Request.Form["ClientID"]; 
    _password = Request.Form["Password"]; 
    _pracType = Request.Form["PracType"]; 
    _encrypt = Request.Form["Encrypt"]; 

    if (GetCRC(_clientID) == _password) 
    { 
     if (_clientID != null) 
     { 
      var verify = VerifyClientInformation(int.Parse(_clientID)); 
      var gsa = new GSDataLayer.Authentication.Auth(); 

      gsa.CreateAuthEntry(_clientID, _password, _pracType, _encrypt, verify.CanUpdate); 
      _aMgr.GotoHomePage(); 
     } 
     else 
     { 
      error.Text = "This conditional failed."; 
     } 
    } 
    else 
    { 
     _aMgr.GotoErrorPage("nocrc"); 
    } 

} 
else 
{ 
    _aMgr.GotoErrorPage("noform"); 
} 

GotoErrorPage方法:このコードセクションでは、このリダイレクトはどのように機能しませんか?

public void GotoErrorPage(string errorcode) 
{ 
    if (HttpContext.Current.Request.UserHostAddress != "127.0.0.1") // for testing only 
    { 
     var instance = new Control(); 
     HttpContext.Current.Response.Buffer = true; 
     HttpContext.Current.Response.Clear(); 
     HttpContext.Current.Response.Redirect(instance.ResolveClientUrl(
        string.Format("~/ErrorPage.aspx?e={0}", errorcode))); 
     HttpContext.Current.Response.End(); 
    } 
} 

oCountが0であれば、それはうまくリダイレ​​クトが、それは> 0であれば、リダイレクトは起こりません。これがなぜ起こったのかについてのアイデアはありますか?

編集

まあ、私はむしろ愚かな感じ

おかげで... GotoErrorPage()UserHostAddressのための条件が犯人でした。私はリダイレクトが発生しないように、テキスト(エラー、結果など)を出力したくないので、これが最初のテストで残っていたことを忘れていました。その条件を削除した後、リダイレクトは正常に実行されます。

私はスピンのために私を投げているのですが、以前はうまくいきましたか?しかし、私はそれも考え出したと思います。私はネットワーク上でこれを開発しているので、私の同僚の一部はlocalhostの代わりにコンピュータ名(program003)を使ってイントラネット経由でアクセスできます。私は '問題'が現れる前に、テスト中にlocalhostの代わりに自分のコンピュータの名前を使っていたと思います。かかわらず、私はlocalhostを使用する場合、IPは127.0.0.1ですが、私はprogram003を使用するとき、私は、このIPv6アドレス取得:

fe80::b1d7:b18b:d10f:f526%8

を、私は間違っていないよ場合は、IPv6のループバックアドレスをすることになっていますbe ::1?非常に奇妙な。

+0

oCount == 0の場合、ホームページにリダイレクトされますか?もしそうなら、それはGotoErrorPage()メソッドではなく、 "GotoHomePage()"によって呼び出されています。 – Sev

+0

リダイレクトする前に、フォーム情報を読み込み、データの2次検証を行います。それからすべてがチェックアウトされると、ホームページにリダイレクトされます。 – Anders

答えて

0

私の問題/解決策の編集を参照してください。

1

GetCRC(_clientID) == _passwordが真で、_clientID != nullが偽であるとすると、何も処理が行われていないので、そこには少なくとも1つの説明があります。

私はまた、落とした括弧とハンガリー人が私の心をどれだけ壊しているかを言う機会を得ることができますか?これは私の目のために読むのが非常に難しいです。

+0

申し訳ありませんが、何らかの理由で私はコードがどのように中かっこになっているかが好きです。私はすべての中括弧を持つようにコードを更新します。あなたが指摘した条件が本当に犯人であるかどうかを調査します。 – Anders

+0

私は、非常に苦労したことを書いた後輩の同僚に言いますが、それはすべての問題です:)あなたはあなたの説明でocount = 0のパスが機能しているのに対し、私はその失敗のパスを説明しています。それは単なる問題であり、必ずしも*問題ではありません。 – annakata

+0

これは問題のコードパスではありません。うーん、これは私が思ったより早く動いていたし、その後いくつかのコードをシャッフルしました。まあ実際に私はif/thenステートメントをあなたが今見ているforeachループに置き換えましたが、それは機能を破壊するようには見えません。私がこれに間違っている場合は私を訂正してください、それは私を驚かないでしょう:) – Anders

0

GotoErrorPage()メソッドで "errorcode"が定義されていますか?それはパラメータを受け入れますか?

+0

あなたの要求は義務付けられています。 – Anders

関連する問題