2017-01-11 2 views
-2

私は、異なるプロバイダーの操作のために(TCP/IPを使用して)クライアントからの接続を受け付けるサーバーを開発しました。サーバーは操作を実行し、出力をクライアントに返します。C#エラーコード管理

私のサーバは、フロー中にエラーが発生した場合にエラーコードを返さなければならず、クライアントは正確にエラーが発生した場所を知る必要があります。

たとえば、サーバーがプロバイダーに接続できない場合、クライアントはエラーコード107および説明「プロバイダーとの接続エラー」を返す必要があります。

エラーコードをコードにハードコードするのではなく、サーバーに保存する最善の方法は何ですか?

+0

サーバーによって、それはWebサーバーであることを意味します。それは...ですか? – RBT

+2

詳細を入力してください。あなたが直面している正確な問題を記述できるコードスニペットをいくつか追加してください。 –

+0

は実際には、任意の「オフライン」のリソースは、この、 'xml'、'リソースfile'、などなど – Prisoner

答えて

1

「サーバー」をゼロから作成した場合(純粋なsocketまたはTcpClientを使用していることを意味します)。あなたはこのスニペットを使用することができ、これを読むには

107=CONNECTION ERROR WITH PROVIDER

public Dictionary<int, string> ReadIniFile(string filePath) 
{ 
    Dictionary<int, string> result = new Dictionary<int, string>(); 
    using (StreamReader reader = new StreamReader(new FileStream(filePath, FileMode.Open)) 
    { 
     string line = string.Empty; 
     while((line = reader.ReadLine()) != null) 
     { 
      if(line.Contains('=')) 
      { 
       int eCode = 0; 
       if(int.TryParse(line.Split('=')[0], out eCode)) 
       { 
        result.Add(eCode, line.Split('=')[1]); 
       } 
      } 
     } 
    } 
    return result; 
} 

することができますこれを行うと、私は次のようにキーと値のペアが含まれているの.iniファイルのいくつかの種類を作るためにあなたをお勧めしますときにアプリケーション/サーバinitialzies O FileWatcherを実装して、あなたのの.iniファイルが変更されるたびに、新しいコードを収集するために、このメソッドを再実行することができますまたはあなただけDictionary<int, stirng>にエラーコードのすべてを読むことができますrは、エラーが発生したときにも希望の値を読み取るだけです。アプリケーションのソースに打ちエラー・コードに(あなたが質問に書いたように)

もう一つの方法は次のとおりです。

すべての新しいエラーコードの再構築が必要になります
Dictionary<int, string> error_codes = new Dictionary<int, string>(); 
error_codes.add(107, "CONNECTION ERROR WITH PROVIDER"); 

(非効率的なよう...地獄) 。

server.exe.configファイルを使用して、エラーコードを説明付きで保存することができます(再構築が必要な場合とできない場合があります)。