Sys.WebForms.PageRequestManagerServerErrorException(status code 500 OR 12031)
我们只要在响应Sys.Application的load事件即可,它会在页面第一次加载时,以及每次Partial Rendering之后被触发,我们在这时候修改页面中form元素的action属性即可,如下:
相应Sys.Application的load事件
Sys.Application.add_load(function()
{
var form = Sys.WebForms.PageRequestManager.getInstance()._form;
form._initialAction = form.action = window.location.href;
});
至于为什么应该这样获得页面中的form元素,_initialAction又是什么,以及为什么要设置它,就要牵涉到UpdatePanel的实现方式,在这里就不多作解释了。只要页面中放置了这么一小段代码,这个问题就被解决了。
深入问题:
造成这个问题的原因,其实就是因为在Url Rewrite之后,form元素的action并非客户端请求的地址,而是Url Rewrite的目标地址。如果我们没有使用Partial Rendering,而是使用了最传统的PostBack,虽然不会造成页面功能的破坏,但是在PostBack之后,用户就会发现地址栏的内容变了,直接变成了目标地址。这可不是我们希望看到的结果,既然Rewrite了,就把它Rewrite到底。当然,我们依然可以使用上面提到的办法,使用JavaScript来修改form元素的action,但是这个做法实在不够“美观大方”,而且用户从HTML源文件中也可以看到我们Url Rewrite的目标地址,不是吗?
如果我们能够在服务器端设置Form的action就好了,可惜System.Web.UI.HTMLControls.HTMLForm类不允许我们这么做。不过还好,我们用的是ASP.NET,我们用的是面向对象的编程模型。于是我们“继承”System.Web.UI.HTMLControls.HTMLForm,实现一个自己的Form控件:
继承HTMLForm类实现自己的From
namespace ActionlessForm {
public class Form : System.Web.UI.HTMLControls.HTMLForm
{
protected override void RenderAttributes(HTMLTextWriter writer)
{
writer.WriteAttribute("name", this.Name);
base.Attributes.Remove("name");
writer.WriteAttribute("method", this.Method);
base.Attributes.Remove("method");
this.Attributes.Render(writer);
base.Attributes.Remove("action");
if (base.ID != null)
writer.WriteAttribute("id", base.ClientID);
}
}
}
然后我们就可以在页面中使用它了。当然,在这之前,我们需要在页面(或Web.config)里注册它:
使用我们自己实现的Form
<%@ Register TagPrefix="skm" Namespace="ActionlessForm"
Assembly="ActionlessForm" %>
...
<skm:Form id="Form1" method="post" runat="server">
...
</skm:Form>
至此,我们已经不需要在页面里编写一段“巧妙”的JavaScript了,Url Rewrite之后form元素的action问题被解决了。
=======================================
问题描述:
Sys.WebForms.PageRequestManagerServerErrorException: An unknown error occurred while processing the request on the server.The status codereturnded from the server was:12031
解决:
在页面上加了上面那段 JS 就解决问题了,呵呵~~
<script language="javascript">
Sys.Application.add_load(function()
{
var form = Sys.WebForms.PageRequestManager.getInstance()._form;
form._initialAction = form.action = window.location.href;
});
</script>
转载于:https://www.cnblogs.com/China-Dragon/archive/2009/05/12/1455099.html
Sys.WebForms.PageRequestManagerServerErrorException(status code 500 OR 12031)相关推荐
- RabbitMQ在Docker中安装以及Management API returned status code 500错误
docker安装rabbitMQ docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq --restart=always --hostna ...
- NuxtServerError:Request failed with status code 500 我的解决办法与思路
目录 一.问题来源 二.解决思路 三.解决办法 四.总结 一.问题来源 平时使用nuxt和部署上线都是正常运行的,偶尔有一天报500的错误; Nuxt.js运行(npm run dev)报错如下: 服 ...
- proxy代理报错: Uncaught (in promise) Error: Request failed with status code 500
POST http://localhost:8013/check/login 500 (Internal Server Error) createError.js:16 Uncaught (in pr ...
- Uncaught (in promise) Error: Request failed with status code 500
分享一些状态码400 404 500等原因: 出错: 前端: // 获取所有的导航菜单async getMenuList(){const {data:res} = await this.$http.g ...
- 莫名其妙的Status Code: 500,返回值500是什么问题呢?构造函数恐怖如斯
构造函数恐怖如斯 事情是这样的今天调试程序时本来一切正常,完美运行(嘿嘿),之前一顿乱改(其实没改什么,就是觉得数据库中表的数据量太少,想用循环加点,之后的几个小时从这里开始,血的教训),之前正常运行 ...
- request failed with status code 500翻译_英语歌词的文言文翻译:文艺清新还是矫揉造作?...
I like you,but just like you. 纵然万劫不复,纵然相思入骨,我也待你眉眼如初,岁月如故. 第一次读到这句文言文翻译的时候,感觉译文的很美,但这种美和英文原文却并没有太多的联 ...
- API集成测试问题2:Expected status code 200 but received 500. Failed asserting that false is true.
接上文,之前的错误消失了,出现了新的问题如下: PHPUnit 8.5.0 by Sebastian Bergmann and contributors. .F 2 / 2 (100%) Time: ...
- HTTP状态码-HTTP Status Code
HTTP状态码->HTTP Status Code HTTP Status Code 常见的状态码: HTTP: Status 200 – 服务器成功返回网页HTTP: Status 404 – ...
- HTTP协议状态码详解(HTTP Status Code)
HTTP协议状态码详解(HTTP Status Code) 使用ASP.NET/PHP/JSP 或者javascript都会用到http的不同状态,一些常见的状态码为: 200 – 服务器成功返回网页 ...
最新文章
- Python Set Literals
- 图像抠图Image Matting算法调研
- HH SaaS电商系统的商品销售管理标签功能模块设计
- oracle 01589,ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
- netty 游戏服务器框图_基于Netty和WebSocket协议实现Web端自动打印订单服务方法与流程...
- FPGA核心板内部各类型资源总结(xilinx)
- LaTeX使用小结2
- honeywell Xenon TM 1900二维码扫描枪扫描不显示中文
- android控制音量大小,Android AudioTrack音量控制笔记总结
- NYOJ234-吃土豆(双层DP)
- H5+在浏览器中打开相机扫描二维码
- java.net.UnknownHostException: localhsot
- FPGA学习-Verilog例化说明
- Apple 好莱坞艳照门的安全分析
- html表格打印边框不全,解决table边框在打印中不显示的问题 (转)
- 360需要的,不是打工者——周鸿祎在360新员工入职培训上的讲话
- 中国ORC低温余热发电系统市场深度调研报告(2023版)
- 移动内部疯传的11篇VoLTE学习笔记,看懂了你也是技术大神(一)
- SV TechClub 第四届 美女与野兽 2019区块链游戏黑客马拉松
- 并行,串行,流水线,线程和进程傻傻分不清楚
热门文章
- 【Tomcat】解决GET方式传递的参数(URL中的参数)乱码问题
- 用符号方法求下列极限或导数matlab,实验7答案 Matlab符号计算
- 美国研发出第一台计算机的时间,研发世界第一台电脑的核心人物,被美国隐藏35年,只因他是个华人...
- gre可以用计算机,GRE数学能用计算器吗
- sessionlistener方法中获取session中存储的值报空指针异常_从Golang实践中得到的教训...
- db2查最新值的前一天值_现在的C1驾照值多少钱?最新价格曝光,老司机一看赚翻了...
- vim配置python代码提示,VIM配置成Python IDE
- python 切换环境_python 使用 pyenv 多环境切换
- 构造函数,对象原型,实例对象三者之间的关系
- 好习惯!pandas 8 个常用的 option 设置