【问题标题】:C# code behaves differently in localhost vs live serverC# 代码在本地主机与实时服务器中的行为不同
【发布时间】:2012-07-12 09:26:44
【问题描述】:

我在常规 Web 应用程序的代码中包含以下 C# 代码:

protected void Page_Load(object sender, EventArgs e)
{
    if (!validTime())
    {
        btnEdit.Enabled = false;
        btnSubmit.Enabled = false; btnSubmit2.Enabled = false;
        lblSuccess.Text = "It is not currently the time to edit picks for this week.";
        lblSuccess.ForeColor = System.Drawing.Color.Red;
        if (picksMade())
        {
            displayCurrentPicks();
        }
    }
    else
    {
        if (picksMade())
        {
            btnEdit.Enabled = true;
            btnSubmit.Enabled = false; 
            btnSubmit2.Enabled = false;
            displayCurrentPicks();
            lblSuccess.Text = "Viewing your current picks";
            lblSuccess.ForeColor = System.Drawing.Color.Green;
            if (Session["Success"] != null && Session["Success"].ToString() != String.Empty)
            {
                lblSuccess.Text = Session["Success"].ToString();
                lblSuccess.ForeColor = System.Drawing.Color.Green;
                Session.Remove("Success");
            }
        }
        else
        {
            btnEdit.Enabled = false;
            btnSubmit.Enabled = true; btnSubmit2.Enabled = true;
            displayCreatePicks();
            lblSuccess.Text = "Create your picks for this week";
            lblSuccess.ForeColor = System.Drawing.Color.Green;
        }
    }
}

问题是,当我使用 ASP.NET 开发服务器对其进行测试时,该代码运行良好。当我将它发布到我的实时服务器时,它有一些不同的行为。

我有一个使用此签名将数据插入我的数据库的 Web 方法:

[WebMethod]
public static void savePicks(List<string> Points, List<string> Teams, List<string> TieBreaker)

再次,它在测试服务器上运行并且运行良好。问题是,当方法返回时,它应该刷新页面,并且确实如此,但是在实时服务器上,我的 page_load 事件中的代码没有运行?还是以不同的方式运行?它从不调用 displayCurrentPicks() 方法?或者如果确实如此,它运行不正确?除了它在测试服务器上完美运行。

我无法通过代码检查此单步执行,因为当我这样做时,它在测试服务器上运行良好。实时服务器托管在 Godaddy 上。

我已经尝试了一切。我已经尝试在正确的方法之后进行页面刷新,并在我的 javascript 中强制 page_load 事件再次运行。没有任何效果。我已经在这几天了。而且我确信我的所有代码都在发布。我已经完成了所有通常的“愚蠢检查”。数据正在进入数据库,当有数据时,picksMade() 函数返回 true。页面刷新时数据就在那里。

为什么实时服务器不运行我发布到它的代码?为什么它运行不同的东西?还是表现不同?我知道它是不同的服务器,但它不应该运行相同的代码吗?

【问题讨论】:

  • web方法在同一个页面吗?它没有被执行并且没有错误?
  • 如何插入一些日志记录函数来准确地找出做什么被调用?
  • 您是使用内置的 ASP.NET 开发服务器还是使用 IIS Express?如果它是内置的,那么我建议您使用 IIS Express 尝试它,因为这可以让您更好地调试它在实时服务器上所做的事情。
  • web方法在同一个页面上。我知道它会被执行,因为数据已放入数据库。在测试服务器上它没有显示错误。
  • 我使用的是内置的 ASP.NET 开发服务器。我将使用 IIS Express 查找并执行一些日志记录功能。所有的好主意。

标签: c# asp.net refresh publish pageload


【解决方案1】:

validTime() 函数究竟做了什么?如果您正在检查特定的时间限制,则可能是您的开发服务器设置为您的本地时区,这就是它工作的原因,但在您的实时服务器上,时区可能不同。不过只是猜测。

【讨论】:

  • 有效时间检查今天的日期和时间与存储在我的数据库中的常量。我已经测试了该功能,它似乎正在工作。所有的日期都是未来 3 个月,所以在那个时间之前它总是返回 true。日期时间 d = 日期时间.最大值; if (!rdr.IsDBNull(0)) { d = rdr.GetDateTime("final_update_time"); } 现在的日期时间 = 日期时间。现在; mycon.Close();返回(现在
  • 我可以一起删除有效时间检查,但仍然得到相同的行为。
  • 您是否希望 else 块中的 displayCurrentPicks 方法在回发时运行?如果是这样,lblSuccess.Text 值是否显示预期的字符串“查看您当前的选择”?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-07
  • 1970-01-01
相关资源
最近更新 更多