打sp1 后ASP.NET 1.1无法提交的问题

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

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

     打补丁前,WebUIValidation.js中的 

ValidatorCommonOnSubmit如下:

function ValidatorCommonOnSubmit()  {
    
event.returnValue = !Page_BlockSubmit;
    Page_BlockSubmit 
= false;
}


  打补丁后,ValidatorCommonOnSubmit如下:
 

function ValidatorCommonOnSubmit()  {
    var result 
= !Page_BlockSubmit;
    Page_BlockSubmit 
= false;
    
event.returnValue = result;
    
return result;
}


 打补丁前,System.Web.dll中BaseValidator的RegisterValidatorCommonScript如下:

protected   void  RegisterValidatorCommonScript()
{
      
if (this.Page.IsClientScriptBlockRegistered("ValidatorIncludeScript"))
      
{
            
return;
      }

      
string text1 = Util.GetScriptLocation(this.Context);
      
string text2 = HttpRuntime.FormatResourceString("Validator_missing_script", text1 + "WebUIValidation.js");
      
string text3 = HttpRuntime.FormatResourceString("Validator_wrong_script""WebUIValidation.js""125""/" + Page_ValidationVer + /"");
      
string text4 = string.Empty;
      
if (this.Page.Request.IsLocal)
      
{
            
object[] objArray1 = new object[3{ text2, "125", text3 } ;
            text4 
= string.Format("/r/n/r/n        ", objArray1);
      }

      
else
      
{
            text4 
= string.Format("/r/n/r/n        ""125");
      }

      
this.Page.RegisterClientScriptFileInternal("ValidatorIncludeScript""javascript", text1, "WebUIValidation.js");
      
this.Page.RegisterStartupScript("ValidatorIncludeScript", text4);
      
this.Page.RegisterOnSubmitStatement("ValidatorOnSubmit""ValidatorOnSubmit();");
}


  打完补丁后,RegisterValidatorCommonScript代码如下:

protected   void  RegisterValidatorCommonScript()
{
      
if (this.Page.IsClientScriptBlockRegistered("ValidatorIncludeScript"))
      
{
            
return;
      }

      
string text1 = Util.GetScriptLocation(this.Context);
      
string text2 = HttpRuntime.FormatResourceString("Validator_missing_script", text1 + "WebUIValidation.js");
      
string text3 = HttpRuntime.FormatResourceString("Validator_wrong_script""WebUIValidation.js""125""/" + Page_ValidationVer + /"");
      
string text4 = string.Empty;
      
if (this.Page.Request.IsLocal)
      
{
            
object[] objArray1 = new object[3{ text2, "125", text3 } ;
            text4 
= string.Format("/r/n/r/n        ", objArray1);
      }

      
else
      
{
            text4 
= string.Format("/r/n/r/n        ""125");
      }

      
this.Page.RegisterClientScriptFileInternal("ValidatorIncludeScript""javascript", text1, "WebUIValidation.js");
      
this.Page.RegisterStartupScript("ValidatorIncludeScript", text4);
      
this.Page.RegisterOnSubmitStatement("ValidatorOnSubmit""if (!ValidatorOnSubmit()) return false;");
}


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

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

最简单的解决方法是:

运行aspnet_regiis -c无效,后来在运行里输入在运行里输入 %WINDIR%/Microsoft.Net/Framework/v1.1.4322/aspnet_regiis.exe -c 解决

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值