Я пытаюсь заставить мое приложение Silverlight 4.0 запускать связанный программный файл с расширением файла, когда пользователь щелкает что-то, чтобы перенести их на свой веб-URL, но у меня возникают разногласия, использую ли я HtmlPage.Window.Navigate или HyperlinkButton.
Мой веб-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 сможет подтвердить или опровергнуть эту проблему.