ASP.NET: __doPostBack有时未被渲染

3
我们最近遇到了一个奇怪的错误,提示“___doPostBack未定义”。
我们正在构建一个相当先进的网站,但并没有经常使用postbacks。其中一个使用postback的地方是ASP.NET登录状态控件。
这是一种概率性问题,有时会呈现出来,有时则不会。对于IE、Chrome,它大多数情况下都能正常工作,但从FireFox中,页面源代码中很可能没有doPostBack。
有什么想法吗?
另外,该错误仅在实际环境中发生,该环境使用Windows 2003和IIS 5.0,dotnet框架为3.5。
这是否与我在页面级别上使用OutputCache有关?
4个回答

5

刚刚发生了这样的事情:当Googlebot或其他机器人在普通用户之前访问您的页面时,该页面将被缓存而没有任何后续操作选项。

我们使用了一个简单的技巧,如果request.browser.javascript是false,则使用不同的outputcacheprofile(ASP.NET向那些浏览器/爬虫/机器人发送不同版本的页面)。


1
如果我能给它投10次赞,我会的!这也刚好发生在我们身上,到目前为止看起来就是这个原因。感谢您提供了详细的解释 - 我不确定什么时候(或是否)会想到这个... - Mike Powell

2
我遇到了相同的问题,但我意识到当服务器控件不需要时,ASP.NET不会渲染__doPostback。
当我添加需要__doPostback的GridView或LinkButton时,ASP.NET才会将其渲染出来。

你是对的。在我的情况下,需要doPostBack的所有控件都位于具有outputcache的用户控件中。 - st78

1

是的,可能与输出缓存有关,请将其注释掉,然后再试一次


页面输出缓存可能导致doPostBack函数无法呈现。 - st78

0
通常情况下,这种情况发生在页面上存在格式不正确的JavaScript代码(通常是在__dopostback函数之前)。
您是否查看了页面源代码并查看了__dopostback函数是否实际呈现在页面中,无论您是否遇到错误?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接