为什么这个重定向不适用于这部分代码?

时间:2009-07-30 19:08:27

标签: c# asp.net

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重定向不会发生。关于为什么会出现这种情况的任何想法?

感谢

修改

嗯,我觉得很傻...... UserHostAddressGotoErrorPage()的条件是罪魁祸首。我忘记了这是我最初测试中的残余,因为我不希望发生任何重定向,只输出文本(错误,结果等)。删除该条件后,重定向发生就好了。

然而,是什么让我失去了旋转,它之前的工作正常。虽然,我想我也想到了这一点。由于我是在网络上开发的,因此我的一些同事可以使用我的计算机名称(program003)代替localhost通过Intranet访问它。我想在“问题”出现之前,我在测试时使用的是计算机名称而不是localhost。无论如何,当我使用localhost时,IP为127.0.0.1,但当我使用program003时,我会获得此IPv6地址:

  

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

如果我没弄错的话,IPv6的环回地址应该是::1?很奇怪。

3 个答案:

答案 0 :(得分:1)

如果GetCRC(_clientID) == _password为真并且_clientID != null为假,则查看逻辑,那么您将完全不采取任何操作,因此您至少有一个可能的解释。

我是否也借此机会说出掉落的牙齿和匈牙利人多少让我心碎?这对我来说很难读懂。

答案 1 :(得分:0)

GotoErrorPage()方法中定义的“errorcode”在哪里?它接受参数吗?

答案 2 :(得分:0)

请参阅我对问题/解决方案的编辑。