ASP.Net发布超时

时间:2011-04-27 07:09:01

标签: .net asp.net iis .net-4.0 asp.net-4.0

过去两周我遇到了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个星期的时间,但这是很好的学习经历。谢谢大家帮助。真的很感激。

3 个答案:

答案 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)

你看过什么被贴回来了吗?

尝试Fiddler2之类的内容来查看回发。

您可能会发现某些内容在浏览器中被截断。

RichText区域也可能受到回发的字符数量的限制。

答案 2 :(得分:1)

试试这个,在你的web.config中,添加以下内容

      <httpRuntime maxRequestLength="8096"/>

<system.web>标记中的某处,由于默认请求长度为8096,因此您的postdata可能大于该值,因此请使用比我提供的值更大的值添加它。希望这会有所帮助。