相关疑难解决方法(0)

ASP.NET Ajax回发突然停止在IPhone/IPad上

我有一个Asp.Net 4.0网站/控制界面,它使用更新面板和一些按钮.更新面板连接到每5秒执行一次的计时器,导致部分回发.按钮切换一些设置,然后通过类似于此的调用强制更新更新面板:

var prm = Sys.WebForms.PageRequestManager.getInstance();
prm._doPostBack('<%= UpdatePanel.ClientID %>', '');
return true;
Run Code Online (Sandbox Code Playgroud)

该网站在IE/Firefox和Safari移动设备(IPhone/IPad)上运行良好,但在移动设备上,回发随机且无声地停止工作.我认为这可能与节省电池有关,并且safari在空闲时关闭部分回发.问题是,当用户返回站点时,回发完全关闭,计时器和按钮都不再导致任何回发.(我已监控服务器上的网络流量以验证这一点).即使用户刷新网站(多次),部分回发也会重新发挥作用.它只是停止向服务器发布数据.然后突然,并且没有特别的原因,回发开始再次工作.停机时间通常长达10分钟,这完全使我的网站无法用于其目的.

鉴于在回发开始之前需要很长时间,我想知道在客户端或IIS中是否有任何设置可以使用?

该网站将仅在我的客户设备上运行,而不是公开的,所以如果在客户端上有任何设置可以使用,我就是为了它.

我真的对此感到困惑,并没有找到触发"bug"的方法,它有时会发生.任何建议和提示非常感谢.


更新:

添加了一些错误处理,并且在回发失败时我(不一致)收到以下消息:

该页面正在执行异步回发,但ScriptManager.SupportParialRendering属性设置为false.确保在回发期间将属性设置为true.

很可能这个属性对于第一个实例中的设备显然是正确的,否则回发将永远不会工作,但实际情况并非如此.


更新2:找到以下博客文章,建议更改web.config中的browserCap设置.现在试试这个.会报告回来.其他建议仍然受到欢迎. ASP.NET 4 BrowserCaps(或者:他们在想什么?)

以上在全屏模式下(从主屏幕运行)禁用safari mobile中的javascript.以下文章建议修复此问题. 问题:iPad与ASP.NET

asp.net iis postback mobile-safari

7
推荐指数
1
解决办法
6193
查看次数

ASP.net没有为某些用户代理生成javascript

********************编辑2**********************我想出了问题所在. ..但我不喜欢这个含义.我之前正在测试我们的iPhone目标移动应用程序,并使用插件将Firefox的用户代理字符串屏蔽为iPhone.

.Net实际上并没有根据这条信息生成所需的回发代码.

我不喜欢这样,因为iPhone和其他多媒体设备可以解释javascript,ASP.net打破任何依赖服务器生成的javascript运行的应用程序.

所以,如果社区允许它...我想将我的官方问题改为......为什么ASP.net不会为特定浏览器生成javascript,以及如何关闭此"功能".

***************结束编辑2***************

我有一个奇怪的问题.我将远程主机上的一些工作代码复制到我的计算机上.当我尝试使用该页面时,我收到了一个javascript错误

__doPostBack is not defined
javascript:__doPostBack('ctl00$ContentPlaceHolder1$login','')()()
Run Code Online (Sandbox Code Playgroud)

当我输出页面源很少时,确实没有服务器端生成的javascript.

我尝试创建一个简单的页面:

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="jsTest.aspx.vb" Inherits="_jsTest" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:TextBox ID="tbTest" runat="server"></asp:TextBox><br />
        <asp:LinkButton ID="linkTest" runat="server">LinkButton</asp:LinkButton>
    </form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

代码隐藏:

Partial Class _jsTest
    Inherits System.Web.UI.Page
    Protected Sub linkTest_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles linkTest.Click
        Response.Write(tbTest.Text)
    End Sub
End Class
Run Code Online (Sandbox Code Playgroud)

得到同样的错误.

我尝试重新启动(嘿,它的工作时间有一半),清除了App_Code,global.asax和web.config中的所有内容,添加了一个带有autopostback = true的文本框...我没有想法.

任何人都可以了解这里发生的事情吗?

**************更多信息**************我刚刚在IE中尝试了一切,它按预期工作,页面源显示:

<input type="hidden" …
Run Code Online (Sandbox Code Playgroud)

javascript asp.net user-agent auto-generate

5
推荐指数
1
解决办法
4818
查看次数

asp.net:__ doPostBack有时候没有呈现

我们昨天得到了奇怪的错误.___doPostBack未定义.

我们正在构建相当高级的网站,但不是很多使用回发.使用回发的地方之一是ASP.NET登录状态控件.

它是概率性的,有时它被渲染,有时 - 不是.对于IE浏览器,它的工作原理很好,但是从FireFox可以很高的机会不在页面源中使用doPostBack.

有任何想法吗?

PS:此外,错误仅发生在使用Windows 2003和IIS 5.0的实时环境中,dotnet框架为3.5

是不是因为我在页面级别上使用OutputCache?

asp.net webforms

3
推荐指数
1
解决办法
4006
查看次数