我有一个非常有趣的问题,我有一个网页,按钮点击它正在检查要打印的标签数量,并警告用户是否超过一定数量的标签(100)。这在Visual Studio中完全正常,但IIS中没有发生验证方法调用。我已经在IIS中反编译了DLL,以确保方法存在,并且在按钮点击时可以通过逻辑调用它。在IIS托管应用程序中,无论我打印多少标签,它都不会警告用户并直接调用PrintLabels()方法。但为什么 ?我曾尝试使用Attach调试应用程序,但IIS应用程序从不进入验证调用方法。 Visual Studio和IIS应用程序都连接到同一个数据库,因此它具有相同的数据。
protected void btnPrintLabel_Click(object sender, EventArgs e)
{
string result = ValidatePrintLimit(); // This call is not happening in IIS or somehow result is always null.
if (string.IsNullOrEmpty(result))
{
PrintLabels();
}
else
{
infoWarning.InnerHtml = result;
upnlWarning.Update();
ScriptManager.RegisterStartupScript(this, this.GetType(), "ToggleScript", "window.setTimeout('open_warning_info_box()',500);", true);
}
}
protected string ValidatePrintLimit()
{
string result = "";
if (!string.IsNullOrEmpty(txtLastKeyNo.Text.Trim()) && !string.IsNullOrEmpty(txtFirstKeyNo.Text.Trim()))
{
int lastKeyNo = int.Parse(txtLastKeyNo.Text.Trim());
int startKeyNo = int.Parse(txtFirstKeyNo.Text.Trim());
BL.PrintLimit objPL = new PrintLimit();
DataTable allLimits = objPL.GetPrintLimits();
int upperLimit = 0;
int warningLimit = 0;
if (allLimits.Rows.Count > 0)
{
warningLimit = Int32.Parse(allLimits.Rows[0]["WarningLimit"].ToString());
upperLimit = Int32.Parse(allLimits.Rows[0]["UpperLimit"].ToString());
}
if ((lastKeyNo - startKeyNo) > warningLimit) result = "Number of label print requested : " + (lastKeyNo-startKeyNo) + "<br/><br/>Number of labels to print exceeds warning limit of : " + warningLimit + "<br/><br/>Do you want to proceed ? ";
}
return result;
}
答案 0 :(得分:0)
您已经部署了过期代码,这是Visual Studio调试器行为也证实的唯一可能的解释。
因为您说您检查的程序集确实有方法调用,所以让我们排除构建/发布失败或者您复制了错误的构建(例如构建为调试但从版本文件夹中获取文件)。