我们拥有 SharePoint 2013 测试和生产环境。测试环境中的站点有一个带有模板、一些工作流和一些表单的表单库。相同的模板和工作流程应用于生产环境中的表单库。某个工作流程会导致发送一封电子邮件,其中包含指向该表单的链接([%Current Item:Encoded Absolute URL%]);所以链接直接指向表单 .xml 文件。
当通过 Internet Explorer 打开来自测试系统的电子邮件链接时,表单将显示在浏览器中。当通过 Internet Explorer 打开来自生产系统的电子邮件的链接时,系统会提示用户下载 .xml 文件以填写并提交 viq InfoPath Filler。需要明确的是,这种不同的功能发生在同一台机器上,相同的 IE 安装/配置。这些链接在语法上看起来是相同的。所以我自然怀疑服务器设置。
我花了一天的时间研究这个。这些是我发现的一些更有用的资源。
我能够缩小问题的范围,即问题仅发生在安装了 InfoPath 的环境中,并且当 Internet Explorer 是正在使用的浏览器时。否则表单总是在我们想要的浏览器中打开。
我已经验证的事情:
- 在链接中添加“?OpenIn=Browser”将强制 IE 在浏览器中打开链接。但是从测试环境发送的邮件不需要这个;让我认为它是基于服务器配置的,我可以做其他事情。
- 表单库在生产中将“在浏览器中打开文档”设置设置为“在浏览器中打开” - 但 IE 仍会提示下载 .xml。
- 站点设置已停用站点集功能“默认情况下在客户端应用程序中打开文档”。
- InfoPath 表单本身是一个“Web 浏览器表单”,因此应该(并且现在)可以在浏览器窗口中呈现。
我也在 SO 上查看了类似的问题,例如Get a SharePoint InfoPath form to load in the browser from a task,但还没有找到关键。
我在 SharePoint 2007-2013 中发现了许多对这个问题的引用,大多数人建议在链接中添加“?OpenIn=Browser”或其他一些查询字符串参数。所以我有一个解决方法——但是一个环境有效,而另一个环境无效,我真的很想确定实际问题是什么。