过去两周我遇到了asp.net帖子问题。
情境:
我的申请页面有3个控件。 WYSIWYG编辑器(Free Textbox),一个文本框,用于获取在WYSIWYG编辑器中编辑的文章的名称,另一个文本框用于接受关键词。
页面中从上到下的控件顺序如下,
首先,名称文本框
第二,WYSIWYG编辑器
最后,关键词文本框
问题:
当用户尝试保存已编辑的文档时,IIS服务器会返回超时(生产在win 2008上运行)。但有趣的是,“名称文本”框信息和一半所见即所得编辑器(它不完全是一半,每种情况都有所不同)信息保存到数据库中。但最后一个“关键字文字”框未保存。在此Web服务器挂起一段时间后,将用户踢出,然后在几分钟后恢复正常速度。我认为应用程序池是回收的。但是在我的开发环境中一切正常(在My PC上运行Win 7 64bit)。我还在生产和开发环境的页面指令中设置了ValidateRequest =“False”。
环境:
环境.NET 4.0,ASP.NET
FreeText框WYSIWYG编辑器
共享主机窗口2008
SQL Server 2008
尝试过的解决方案(但没有突破):
尝试使用不同的浏览器Firefox,Chrome,IE和同样的错误
在页面指令中添加了ValidateRequest =“False”并用纯文本框替换了WYSIWYG编辑器并试图保存,同样的问题。
只是试图直接从page.request对象记录发布数据。 WYSIWYG文本框仍然可以获得“名称文本框”的完整数据一半,休息时没有任何内容
DB连接或表字段没有问题。我有三重检查。
可能的怀疑和疑问:
根据我的知识,对帖子数据长度没有限制。但在IIS中可以覆盖这个吗?想知道这是否在我的共享主机上设置。
基本上,http post数据在浏览器和server.request对象之间被截断。如果发生这种情况会是什么原因?
如果http post被截断,为什么整个应用程序挂起(或重新启动)?
将html内容发布为http post?
谢谢。
新发现:
使用httpfox查看我的帖子。帖子大小约为9958字节。但是firefox发送了第一个330字节的数据,然后网页挂起。大约一分钟后,我在httpfox中收到NS_ERROR_NET_RESET错误代码。
使用filder2和IE9检查我的帖子。它尝试发送前512个字节然后挂起。返回“ReadResponse()失败:服务器未返回此请求的响应。”
问题:
这可能是浏览器问题或服务器问题。我认为如果浏览器出现问题,IE和Firefox就不会发生这种情况。
更新
最有可能将问题与网络托管隔离开来。通过将表单post url更改为不同的域并查看是否可以在该域中检索值来进行测试。是的有效。只有它不适用于我的域名。有趣的是我测试了这个正常的html页面帖子。它也没有用。因此,很可能安装了一个安全措施来防止此错误或服务器配置错误。已经给他们买票并等待。
您的所有反馈如何帮助我隔离问题。
解决:
是的,这个问题出现在我们的网站托管网站上。到目前为止,我从他们那里听到的就像一些防火墙阻止来自http的大帖子。他们说现在我们的域名是白名单。无论如何,现在它的作品。但这吃了2个星期的时间,但这是很好的学习经历。谢谢大家帮助。真的很感激。
答案 0 :(得分:3)
我在一个网页上遇到了同样的错误。它是非常有线的,因为如果我使用代理,错误就行了,如果我从我的电脑直接调用我有时间,并且永远不会继续。
此问题直到2011年12月才出现的网站是http://www.auctionsniper.com/ 如果我使用它的移动版本,同一网站可以使用。
经过上述网站的多次检查后,我发现问题出现在非常大的观点状态! 我如何找到它:我保存了我的页面的html部分,因为它已渲染并开始从html删除项目并发帖,直到我发现该帖子在我减少viewstate帖子时继续。
解决方案是在许多不需要的控件上禁用viewstate,并在较小的部分压缩+剪切剩余的viewstate发布数据。
您可以谷歌并找到许多方法来压缩和剪切部分视图状态。
一些文章:
http://msdn.microsoft.com/en-us/magazine/cc188774.aspx
如何剪切教程:
http://www.dotnetfunda.com/articles/article634-viewstate-patterns-in-aspnet-.aspx
如何压缩它
http://www.hanselman.com/blog/ZippingCompressingViewStateInASPNET.aspx
http://www.codeproject.com/KB/viewstate/ViewStateCompression.aspx
http://www.google.com/search?hl=en&safe=off&q=asp.net+compress+viewstate&aq=f&aqi=g1g-b2&aql=f&oq=
PS: 在您使用的this demo page of the free TextBox中,视图状态非常大!如果你实际拥有并且文本在里面,那么想象看状态有多大。不是那么自由 - 成本是巨大的观点。
正如 Jeyara 对下面的评论所说,最后这是错误,主机服务器上的防火墙阻止了大型帖子文件。
因此,错误/超时与大量回发数据有关,这是一个罕见但存在的问题。
答案 1 :(得分:2)
答案 2 :(得分:1)
试试这个,在你的web.config中,添加以下内容
<httpRuntime maxRequestLength="8096"/>
<system.web>
标记中的某处,由于默认请求长度为8096,因此您的postdata可能大于该值,因此请使用比我提供的值更大的值添加它。希望这会有所帮助。