回发在 Windows 7 的 Safari 中不起作用

Posted

技术标签:

【中文标题】回发在 Windows 7 的 Safari 中不起作用【英文标题】:Postback is not working in Safari in Windows 7 【发布时间】:2012-08-02 04:09:06 【问题描述】:

我们的 QA 团队报告说,我们的一个应用程序在 Windows 7 的 Safari 中无法运行。在检查了问题后,我们发现任何回发事件都无法运行。经过一些尝试,我们发现 Page.IsPostback() 报告错误,并认为这是第一次加载页面,并且回发不包括 ViewState。

我们尝试了许多解决方案,包括ASP.Net postback problem with ViewState in Safari on Windows 7Viewstate invalid when using SafariViewState Chunking in ASP.NET 2.0 (maxPageStateFieldLength)

但都没有让 Safari 正常工作。

这个应用程序没有什么特别之处。普通页面使用一个非常普通的母版页。

有什么建议吗?

【问题讨论】:

我的建议。 1. 检查 javascript 错误,2. 压缩和切割视图状态。 @Aristos,没有 javascript 错误。此外,我将视图状态分成多个字段,但同样的问题仍然存在,任何回发都被视为全新的回发:( 你看到了什么?回发是发生还是根本不发生并一直在那里等待? @Aristos,回发发生但 Page.IsPostback() 报告错误并认为这是页面的首次加载,并且回发不包括 ViewState。 @kman0:我想出了如何解决这个问题。请在下面查看我的答案。 【参考方案1】:

如果启用了协商提供程序,Safari 在 IIS 下使用 Windows 身份验证时会出现问题,因此 AJAX POST 无法正常工作。

如何解决? 在 IIS 中,转到您网站的身份验证设置。右键单击 Windows 身份验证,选择提供程序并删除协商,留下 NTLM,这样一切正常。

[参考资料]AJAX POST Request Only Works Once in Safari 5Negotiate Mechanism Wikipedia 中的文章显示它没有在 Safari 中实现

【讨论】:

您不必进入 ISS(国际空间站),但在 IIS 中就足够了 ;) 开玩笑的,对于 IIS Express,您可以在文件 C:\Users\[Username]\Documents\IISExpress\config\applicationhost.config 和在<security> 部分中搜索windowsAuthentication 部分。

以上是关于回发在 Windows 7 的 Safari 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

回发在 Firefox 中无法用于 asp.net(C#) 页面

svg图像不适用于safari 5.1.7(windows)

固定定位在 Safari 7 中不起作用

地理定位在 Safari 5.1.7 中不起作用

jQuery Ajax 在 IE 6/7/8 中不工作,在 FF/Safari/Chrome 中工作

iOS Safari 在回发启动后不执行 .html() jQuery (vb.net)