2011-08-03 6 views
0

私はSilvlerightビジネスアプリケーションSilverlight_BussAppを持っています。 Silverlight_BussAppプロジェクトとSilverlight_BussApp.Webプロジェクトがあります。Silverlight 4ビジネスアプリケーションのメモ帳を開く

ボタンクリックイベントのコードの後に​​メモ帳を作成した後で、メモ帳を開く必要があります。 これをブラウザのアプリケーション外にすることはできません。

Silverlightは私に許可していないので、プロジェクト にWCFサービスを作成し、Silverlightプロジェクトのプロキシ経由で呼び出しました。 これは正常に動作します。 WCFサービスのコードは次のとおりです。

public void openFileWithNotepad(string filename) 
     { 
      try 
      { 
       if (File.Exists(filename)) 
       { 
        Process.Start("notepad.exe", filename); 
       } 
       else 
       { 
        MessageBox.Show(
          "I was unable to locate the following file: " + filename, 
          "File Not Found"); 
       } 

      } 
      catch (Exception e) 
      { 
       throw e; 
      } 
     } 

今、私は複数のSilverlightプロジェクトでは、このopenFile機能を使用する必要があります。 "WCFサービスプロジェクト"を作成し、WCFサービスを作成し、IISでホストし、Silverlightプロジェクトでプロキシを作成しました。残念ながら、ファイルが開かず、「ファイルが見つかりません」というエラーが表示され続けます。 誰かが私のSilverlightプロジェクトでこれをどのように再利用可能な機能にすることができるのか理解できますか?

IISでホストされているWCFサービスで同じコードを使用すると、Silverlightプロジェクトの同じソリューションでホストされても完全に動作するのに対して、なぜ機能しません。

答えて

1

手始めに、Silverlight_BussApp.WebプロジェクトのコードはSilverlight_BussAppプロジェクト内のコードは、クライアントでを実行しようとしている一方で、サーバー上の実行されようとしています。開発中、クライアントとサーバーは表面上同じマシンです - Visual Studioで "実行"をクリックすると、Silverlightアプリケーションがブラウザで実行されている間に開発Webサーバーがマシン上で起動し、.Webプロジェクトをホストします。
アプリケーションをデプロイすると、クライアント(ブラウザ)はサーバー(IIS)とは異なる物理マシンに存在する可能性が高くなります。したがっては、(おそらく "ファイルが見つかりません"というエラーが発生している)のセキュリティ制限を無視して、Process.Startへの呼び出しは、あなたとはまったく異なるコンピュータでメモ帳を起動します。再使用します。

SaveFileDialogを使用して、クライアントのマシンに必要なものを保存し、結果ファイルを開くように指示してください。

+0

あなたは正しいです。しかし、私は同じIIS上で私のSilverlight_BussApp.Webをホストしようとしたが、私はまだ "ファイルが見つかりません"というエラーが表示されます。この問題の解決策は何ですか? –

+0

@New Developerあなたが取っているアプローチ(WCF呼び出しを介してサーバ上で 'Process.Start'を呼び出す)はうまくいきません。 'SaveFileDialog'を使ってファイルの内容をクライアントコンピュータに保存し、このファイルを開きます。 '.txt'ファイルの場合は、デフォルトでメモ帳が使用される可能性があります。 – Donut

+0

SaveFileDialogを使用できません。メモ帳にコードが埋め込まれているため、エンドユーザーが閲覧できるように開く必要があります。 –

関連する問題