2009-04-01 4 views
1

SilverlightアプリケーションでIEに問題が発生しました。 Silverlight 2にはファイルダウンロードの仕組みが含まれていないので、自分のデバイスに解決策を提示するために残しました。次のように私がやった方法は、それは:Silverlight 2 - ダウンロードファイル - IE Blocksファイルのダウンロード

HtmlPage.Window.Navigate(新しいウリ(sb.ToString()、UriKind.Relative));

私のStringBuilderは、クエリ文字列を読み込み、サーバー上の* .ashxハンドラにクエリ文字列との相対URLが含まれているデータベースからいくつかのデータを取得し、Excelファイルを返します。

これを行うと、IEでブロックされたファイルのダウンロードバーが表示されます。 IEの新しいセキュリティ機能であり、ユーザーのWebページとのやりとりによってダウンロードが開始されなかったと考えてブロックされていることを理解しています。ユーザーはダウンロードを許可することができ、残りのセッションでその設定が記憶されているように見えます。しかし、次回は再びページが開きます。サイトが信頼ゾーンにある場合でも、ポップアップブロッカーがサイトのポップアップを許可するように構成されている場合でも。

誰もがIEのユーザーがこのファイル実際の要求でやったことを知っているようにする方法を知っていますか?私の場合は

+0

チェックヘッダ? – jminkler

答えて

0

は初回のみ(IE 7を使用して)happended、多分それはあなたの地元のdevのインスタンスになりますか?

私もMSDNのページがこれを緩和でき事、「メッセージがの...一番上に表示される」ことを示しています、非常にあなたができることがないと思う。

  • は、ユーザーに警告メッセージが表示され、一度クリックすると、アプリはリセットされます(設定が保存されているアプリを再読み込みすると、隔離されたストレージに現在のアプリの状態が保存されます)。

  • オープンポップアップし、ポップアップで含めるとダウンロードするための標準のHTMLボタン。

HTH ブラウリオ

2

私は正確に同じ問題を抱えていました。私の解決策は、HtmlPage.Window.Navigateを使用せず、代わりにHyperlinkBut​​tonを使用してNavigateUriプロパティを動的に設定することでした。

上記のようにアプリの状態を保存して復元することができませんでした。さて、それはしましたが、いつ実行する必要があるのか​​、いつ実行しないのかを判断することは不可能でした。だから最終的には実際には機能しませんでした。

は、CodePlexの上でこの議論を参照してください....

http://slideshow2.codeplex.com/Thread/View.aspx?ThreadId=60242

1

ではなくHtmlPage.Window.NavigateのHtmlPage.PopupWindow試してみてください。インターネットゾーンサイトでは、IEの「ファイルダウンロードの自動プロンプト」設定がデフォルトで無効になっています。

1

これはダウンロード用のURLを開き、上書きするためのコードソリューションですIE 8でのファイルダウンロードオプションの問題の自動プロンプトです。

またHyperlinkBut​​ton使用しますが、すべてがコードから呼び出されます。

public class BrowserHelper 
{ 
    private sealed class HyperlinkButtonCaller : HyperlinkButton 
    { 
     public static void OpenUrl(Uri url) 
     { 
      var button = new HyperlinkButtonCaller() 
      { 
       NavigateUri = url 
      }; 

      button.OnClick(); 
     } 
    } 

    public static void OpenUrl(Uri url) 
    { 
     if (url == null) 
     { 
      throw new ArgumentNullException("url"); 
     } 

     HyperlinkButtonCaller.OpenUrl(url); 
    } 
} 

BrowserHelper.OpenUrl(new Uri(ClientGlobalInfo.Current.ApplicationUrl, "myhandler.ashx")); 
+0

メソッドはユーザー開始アクションとして呼び出さなければなりません。そうしないと、アクションは実行されません。 – HolaJan