2017-02-14 5 views
0

サービスファブリックから始めます。私は、次のコードを実行非常に単純なコンソールアプリケーションを作成しました:サービスファブリックでのコンソールアプリケーションのホスト

class Program 
{ 
    static void Main(string[] args) 
    { 
     Console.WriteLine("Hello world!"); 
     File.AppendAllText("c:\\temp\\hello.txt", "Hello world!" + DateTime.Now.ToString() + "\r\n"); 
     Console.ReadLine(); 
    } 
} 

は、それから私は、Visual Studioでのゲストの実行可能なプロジェクトを作成し、exeファイルのアプリケーションを指すように。 Service Fabricにインストールされると、ファイルが作成されたが、サービスファブリックはエラーをスローします。

エラーイベント:SourceId = 'System.FM'、Property = 'State'。 パーティションがターゲットレプリカまたはインスタンス数未満です。 生地:/ Test3は/ Test3Service -1 1 5ef5a0eb-5621-4821-95cb-4c1920ab7f0c (0レプリカのうち0を表示利用可能な全レプリカ:0)

が正しいこのアプローチですか?サービスファブリックでホストされているexeアプリケーションを実装することはできますか、何かを実装/継承する必要はありますか?

EDIT

アプリケーションがデプロイされると、それは次のメッセージを示す、警告状態に入る:

Warning message

は、その後すぐにそれがエラー状態に遷移:

Error message

答えて

2

はいサービスファブリック内の単純なコンソールアプリケーションをゲスト実行ファイルとしてホストすることができます。これは問題ではありません。

アプリケーションは、デフォルトのdoesntのことで、あなたのユーザーレビューエグゼが権限を持っているc:/temp内のファイルへの書き込みしようとしているので、あなたが見ている問題がありそうです。サンプルコードのその部分を削除するか、hello.txtに書き込むように変更して、ゲストExeが実行されているのと同じフォルダに移動します。

ただし、サービスファブリックノードのファイルストレージは一時的であるとみなしてください。サービスをクラスタメンテナンスの一部としてサービスファブリックによってノード間を移動できるため、そこにデータを格納することに依存しません。

は私が書かれているファイルを参照することができSF https://stackoverflow.com/a/37966158/1062217

+0

内のファイルシステムへのアクセスに関するいくつかの詳細は、この回答を参照してください。コンソールアプリケーションは実行されますが、サービスファブリックはそれをエラーとしてマークします。ステートレスサービスファブリックアプリケーションを作成すると機能しますが、そのままコンソールをホストしようとしていたため、アプリケーションをサービスファブリックアプリケーションに移植する必要はありません。問題の内容に関する情報が見つかりません。 –

+1

サービスを実行しようとしたときにサービスファブリックに表示されるエラーは何ですか? – yoape

+0

質問を編集して、例外を追加しました。 –