今天在产品里发现了一个bug,多个aspx页面都无法提交,点了提交按纽都没有反应,初步猜测是Validate的问题。详细的解决过程就不写了,将最后的结论总结如下:

    .NET Framework 1.1的补丁对Validator有影响,如果使用补丁前的WebUIValidation.js,会导致包含有Validators的页面无法提交。

     打补丁前,WebUIValidation.js中的ValidatorCommonOnSubmit如下:
{
ASP.NET 1.1无法提交的问题    event.returnValue = !Page_BlockSubmit;
ASP.NET 1.1无法提交的问题    Page_BlockSubmit 
= false;
ASP.NET 1.1无法提交的问题}

  打补丁后,ValidatorCommonOnSubmit如下:
 
{
ASP.NET 1.1无法提交的问题    var result = !Page_BlockSubmit;
ASP.NET 1.1无法提交的问题    Page_BlockSubmit 
= false;
ASP.NET 1.1无法提交的问题    
event.returnValue = result;
ASP.NET 1.1无法提交的问题    
return result;
ASP.NET 1.1无法提交的问题}

 打补丁前,System.Web.dll中BaseValidator的RegisterValidatorCommonScript如下:
ASP.NET 1.1无法提交的问题protected void RegisterValidatorCommonScript()
{
ASP.NET 1.1无法提交的问题      
if (this.Page.IsClientScriptBlockRegistered("ValidatorIncludeScript"))
{
ASP.NET 1.1无法提交的问题            
return;
ASP.NET 1.1无法提交的问题      }

ASP.NET 1.1无法提交的问题      
string text1 = Util.GetScriptLocation(this.Context);
ASP.NET 1.1无法提交的问题      
string text2 = HttpRuntime.FormatResourceString("Validator_missing_script", text1 + "WebUIValidation.js");
ASP.NET 1.1无法提交的问题      
string text3 = HttpRuntime.FormatResourceString("Validator_wrong_script""WebUIValidation.js""125""\" + Page_ValidationVer + \"");
ASP.NET 1.1无法提交的问题      
string text4 = string.Empty;
ASP.NET 1.1无法提交的问题      
if (this.Page.Request.IsLocal)
{
 ;
, objArray1);
ASP.NET 1.1无法提交的问题      }

ASP.NET 1.1无法提交的问题      
else
{
);
ASP.NET 1.1无法提交的问题      }

ASP.NET 1.1无法提交的问题      
this.Page.RegisterClientScriptFileInternal("ValidatorIncludeScript""javascript", text1, "WebUIValidation.js");
ASP.NET 1.1无法提交的问题      
this.Page.RegisterStartupScript("ValidatorIncludeScript", text4);
ASP.NET 1.1无法提交的问题      
this.Page.RegisterOnSubmitStatement("ValidatorOnSubmit""ValidatorOnSubmit();");
ASP.NET 1.1无法提交的问题}

  打完补丁后,RegisterValidatorCommonScript代码如下:
ASP.NET 1.1无法提交的问题protected void RegisterValidatorCommonScript()
{
ASP.NET 1.1无法提交的问题      
if (this.Page.IsClientScriptBlockRegistered("ValidatorIncludeScript"))
{
ASP.NET 1.1无法提交的问题            
return;
ASP.NET 1.1无法提交的问题      }

ASP.NET 1.1无法提交的问题      
string text1 = Util.GetScriptLocation(this.Context);
ASP.NET 1.1无法提交的问题      
string text2 = HttpRuntime.FormatResourceString("Validator_missing_script", text1 + "WebUIValidation.js");
ASP.NET 1.1无法提交的问题      
string text3 = HttpRuntime.FormatResourceString("Validator_wrong_script""WebUIValidation.js""125""\" + Page_ValidationVer + \"");
ASP.NET 1.1无法提交的问题      
string text4 = string.Empty;
ASP.NET 1.1无法提交的问题      
if (this.Page.Request.IsLocal)
{
 ;
, objArray1);
ASP.NET 1.1无法提交的问题      }

ASP.NET 1.1无法提交的问题      
else
{
);
ASP.NET 1.1无法提交的问题      }

ASP.NET 1.1无法提交的问题      
this.Page.RegisterClientScriptFileInternal("ValidatorIncludeScript""javascript", text1, "WebUIValidation.js");
ASP.NET 1.1无法提交的问题      
this.Page.RegisterStartupScript("ValidatorIncludeScript", text4);
ASP.NET 1.1无法提交的问题      
this.Page.RegisterOnSubmitStatement("ValidatorOnSubmit""if (!ValidatorOnSubmit()) return false;");
ASP.NET 1.1无法提交的问题}

  花了些时间找出问题原因,记录下来,以便查询。

  再有就是建议没有打.NET Framework 1.1补丁的,尽早打补丁,同时不要在发布产品的时候发布任何.NET Framework中带的文件,包含.js和.dll。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-03-01
  • 2022-12-23
  • 2021-07-31
猜你喜欢
  • 2022-12-23
  • 2021-11-11
  • 2022-12-23
  • 2022-12-23
  • 2022-03-04
  • 2022-12-23
  • 2022-02-24
相关资源
相似解决方案