locked
SilverlightのキャッシュとFileDialog.ShowDialog()のエラーについて RRS feed

  • 質問

  • Silverlightでクライアントからサーバへ画像をアップロードして表示するアプリを作っているのですが
    うまく動かなくて困っています。

    例えば

    1.[画像A]をアップロード

    2.[表示ボタン]を押すと[画像A]が表示される

    3.[画像B]をアップロード

    4.[表示ボタン]を押すと[画像A]が表示される

    *サーバにアップロードされた画像は全て同一フォルダに[test.jpg]という名前で上書きされます。

    確認してみたところ、1.の時点でサーバの[test.jpg]は[画像A]で
    3.の時点のサーバの[test.jpg]は[画像B]になっていました。

    キャッシュ関連が怪しいと思い、ブラウザのキャッシュを消してみましたが効果はありませんでした。
    Silverlight自体がキャッシュを持っているのかなと思い消し方を調べてみたのですが、
    情報が乗っているサイトが見つけれませんでした。
    Silverlightのキャッシュの消し方や、違う方法で解決できるのであれば教えていただけないでしょうか。


    またOpenFileDialogについて質問です。

            private void bt_Click(object sender, RoutedEventArgs e)
            {
            OpenFileDialog filedlg = new OpenFileDialog();
                filedlg.Multiselect = false;
                filedlg.Filter = "Image files (*.jpg;*.png)|*.jpg;*.png";
                
                *if ((bool)filedlg.ShowDialog())
                {
            //以下処理
            }
            }

    このソースが動くときは[bt]というボタンを押されたときなのですが
    マウスでボタンがクリックされた時では通常通りFileDialogが立ち上がり問題なく動くのですが
    エンターキーが押されたとき上記の[*]の部分の[filedlg.ShowDialog()]でエラーが発生します。
    エラーの種類は[System.ExecutionEngineException]でした。
    これを調べてみても、この例外は、共通言語ランタイムの実行エンジンに内部エラーがある場合にスローされます。
    とだけでていてよく理解できませんでした。
    また、.ShowDialog()はボタンがどう押されたなどは関係ないと思うのですが、
    なにが原因でこのエラーが発生しているのかを教えていただけないでしょうか。

    長文になってしまいましたが、できるだけ細かく説明したかったので申し訳ありません。
    2009年1月30日 2:29

すべての返信

  • アップロードとダウンロード側のコードを示していただけると、画像が変わらない問題について、何が起きているか、もう少しわかるように思います。

    OpenFileDialog側(Silverlightクライアント)ですが、私の環境(Windows Vista SP1/Visual Studio 2008 SP1)で次のコードですと、エラーとなりません。

    1 OpenFileDialog ofd = new OpenFileDialog();  
    2 ofd.Multiselect = false;  
    3 ofd.Filter = "Image files (*.jpg;*.png)|*.jpg;*.png";  
    4 bool? isClickedOK = ofd.ShowDialog();  
    5 if (isClickedOK == true)  
    6 {  
    7 // 以下、[開く(O)]が押された場合  
    8

     
    この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。
    Microsoft
    2009年2月2日 8:22
  • 私も困っています。
    Scheatさんとほぼ同じプログラムでテストしたところIE7.0が落ちます。
    「'System.ExecutionEngineException' のハンドルされていない例外が
    System.Windows.Browser.dll で発生しました。」
    デバガによると
    ・・・・・・
    bool? DlgClick = fileDlg.ShowDialog();
    if (DlgClick == true)
    ・・・・・・
    で発生しています。
    このプログラムをIISに登録して他のクライアントマシンでテストしましたが全て同じ現象が起きます。
    開発環境はXP SP3/VS2008(Standard) Ver9.0.30729.1 SP/.NET 3.5 SP1/Silverlight Projects 2008 Ver9.0.30729.146
    これ以外にも
    fileDlg.NameとExtension以外動作しませんでした。(FileSystemInfo等も同じ)
    また日本語は標準のメモ帳.TXTがデフォルトのANSIでは字化けしUnicodeなどでないと正しく表示されません。
    (.NetはUnicode仕様とあるのですが日本語に不親切と思います)
    Silverlight2はやはりβ版と割り切らないといけないようです。
    回答にならなくて申し訳ありません。

    2009年2月17日 1:56