0

顧客サイトには常にインターネット/VPN アクセスがあるとは限らないため、リモートの営業スタッフがラップトップでローカルに顧客データを記録して作業できるようにする、LightSwitch に組み込まれた小さなデスクトップ アプリケーションがあります。そのため、各クライアント アプリケーションには、SQL 2012 Express のローカル インストールがあります。

コマンド バーには、"データベース バックアップ" というラベルの付いたボタンがあります。これは、オフィスに戻ったときに、マシンからマップされたネットワーク ドライブに .mdf ファイルをコピーするためのものです。現在 SQL インスタンスにアタッチされていないテスト .mdf ファイルで正常に動作します。問題は、その .mdf ファイルを本番環境 (SQL を実行中) にコピーしようとすると、SQL Express で開いているためコピーできないことです。

私の質問はこれです: System.ServiceProcess.ServiceController クラスを使用できるようにするクライアントに追加できる参照はありますか? または、Windows サービスを停止して再起動できるようにするには、どのようなアセンブリを使用するのが最適でしょうか? (サービスを停止 => mdf ファイルをコピー => サービスを再起動)

4

1 に答える 1

0

まず、トポロジーを理解していることを確認したいと思います。あなたのアプリは、アプリとデータベースが同じマシンでホストされる 2 層環境として展開される Silverlight デスクトップ アプリとして構成されていると想定しています。

そのため、ServiceController クラスを呼び出すことができるように、アプリのコードを記述できるはずです。それはSilverlightであり、ServiceControllerにアクセスできないため、「クライアント」コードからはできません。代わりに、同じマシン上でホスト プロセスとして実行され、完全な .NET Framework にアクセスできる "サーバー" コードに記述する必要があります。ユーザーがボタンをクリックしたときにクライアント コードが呼び出すことができる Web API を介して、カスタム サーバー コードを公開できます。このパターンを説明する良い記事があります: http://blog.pragmaswitch.com/?p=765

于 2014-06-19T13:25:23.117 に答える