【发布时间】:2014-09-04 18:44:58
【问题描述】:
我正在尝试让我的 Silverlight 4.0 应用程序在用户单击某些内容以将它们带到其 Web URL 时启动关联的程序文件的文件扩展名,但无论我使用 HtmlPage.Window.Navigate,我都有不同的体验或超链接按钮。
我的 Web URL 是我的资源的 RESTful URL,例如“http://.../objects/object-1/package”。 URL 实际上是一个 ASP.NET MVC 2 控制器,它返回带有自定义扩展名的 zip 内容。也就是说,HTTP 响应标头如下所示:
HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Date: Wed, 13 Apr 2011 17:22:19 GMT
X-AspNet-Version: 4.0.30319
Content-Disposition: attachment; filename=object-1.pkg
Transfer-Encoding: chunked
Cache-Control: private
Content-Type: application/zip
Connection: Close
当我使用超链接按钮时,Internet Explorer 会提示我打开、保存或取消。当我选择打开时,它会打开我与 *.pkg 关联的应用程序:
<HyperlinkButton TargetName="_blank" NavigateUri="http://localhost:8023/objects/object-1/package">Launch!</HyperlinkButton>
但是,如果我改为使用最终使用 HtmlPage.Window.Navigate 的命令,IE 只会打开一个窗口,然后快速关闭:
string url = string.Format("{0}/objects/object-{1}/package", _webBaseUrl, objectId.Value);
Uri uri = new Uri(url);
HtmlPage.Window.Navigate(uri, "_blank");
我已经使用 Fiddler2 进行了验证,在这两种情况下,HTTP 请求和 HTTP 响应看起来相同。这似乎是 Internet Explorer 或 Silverlight 的细微差别,我不确定我能否克服,但我希望 Stackoverflow 社区能够确认或否认这个问题。
【问题讨论】:
-
我们在下载 excel 文件时遇到了同样的问题。似乎点击 HyperlinkButton 被视为比 HtmlPage.Window.Navigate 更安全,并且 IE 以不同方式处理此类请求。
-
我认为另一个问题是相关的:stackoverflow.com/questions/16927571/…
标签: silverlight internet-explorer silverlight-4.0 hyperlink