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
?非常に奇妙な。
oCount == 0の場合、ホームページにリダイレクトされますか?もしそうなら、それはGotoErrorPage()メソッドではなく、 "GotoHomePage()"によって呼び出されています。 – Sev
リダイレクトする前に、フォーム情報を読み込み、データの2次検証を行います。それからすべてがチェックアウトされると、ホームページにリダイレクトされます。 – Anders