我有两个带有以下代码行的Silverlight应用程序:
HtmlPage.PopupWindow(new Uri("http://www.microsoft.com"), "test", null);
第一个应用程序(一个简单的测试应用程序)总是正确弹出一个新的浏览器窗口。
第二个应用程序(我的实际,更复杂的应用程序)在重新启动后第一次启动应用程序时正确弹出浏览器窗口,但是如果我关闭应用程序并再次启动它,则执行上面的行时没有任何反应。如果我重新启动(Vista)它,那么第一次只能再次正常工作。
这两个应用程序都安装在同一个IIS应用程序文件夹中,使用相同的web.config,并且具有相同的.aspx主机(当然,除了aspx文件名和silverlight应用程序名称之外)。
这第二个应用程序使各种Web服务调用回到同一个域(和相同的应用程序文件夹),但除此之外不与UI之外的任何东西进行交互(即,没有IsolatedStorageFile读/写 - 但它确实检索了cookie如果这有任何区别)。
我已将AllowHtmlPopupWindow设置为:
<asp:Silverlight ID="Xaml1" runat="server" AllowHtmlPopupWindow="true"
我不知道以下内容是如何相关的,但有趣的是,第一个(测试)应用程序是否正常工作,无论是否设置了AllowHtmlPopupWindow,如上所述。 AND,即使设置如上,
HtmlPage.IsPopupWindowAllowed
始终为false(而在第二个应用程序中,IsPopupWindowAllowed在正常工作时为true,在失败时为false)。
有人有什么想法吗?
答案 0 :(得分:0)
问题似乎在于对Web服务的调用。我发现如果我使用代理调用显式关闭Web服务:
proxy.CloseAsync();
然后对HtmlPage.PopupWindow的后续调用工作正常。在这种情况下,IsPopupWindowAllowed的值也是一致的。 (当IsPopupWindowAllowed为假时,仍然不知道为什么PopupWindow在测试应用程序中正常工作。)
答案 1 :(得分:0)
对于非跨域应用程序(http://msdn.microsoft.com/en-us/library/cc974117%28VS.95%29.aspx),默认情况下AllowHtmlPopupWindow为true。您更大的应用程序调用Web服务,因此它是跨域的,默认情况下AllowHtmlPopupWindow为false。这只能解释你的最后一句话......