2017-01-27 13 views
0

私は自分のWebサービスでform.csを呼び出し、ボタンをクリックしてデバイスのWebサーバー上の時刻を設定するGetLocalTime()メソッドを持っていますか?では、ボタンのクリックイベントでdatetime関数を呼び出して時刻を設定するにはどうすればよいですか? WebサービスでWebサービスからdatetime関数を呼び出すC#.net

方法:

[WebMethod] 
     public DateTime GetLocalTime() 
     { 
      OracleBridge ob = new OracleBridge(_connStr); 
      string sqlQuery = "select sysdate from dual"; 

      DateTime dt = new DateTime(); 
      try 
      { 

       dt = Convert.ToDateTime(ob.ExecuteScalar(sqlQuery)); 

      } 
      catch (OracleException ex) 
      { 
       throw ex; 
      } 

      return dt; 
     } 

時間を取得し、設定するform.csでのボタンのクリックイベント:

private void btnSync_Click(object sender, EventArgs e) 
     { 

          ????????????    // what should I write here to call the method 
       DateTime localDateTime = ?????????; //what should I write here pass datetime to setsystemdatetime 


       SetSystemDateTime(localDateTime); 

       System.Threading.Thread.Sleep(500); 
       SetSystemDateTime(localDateTime); 
} 
+0

あなたのWebメソッドが何であれHTTP POSTを行うコードがいくつかあります。あなたのwebmethodがどこに格納されているのかわからないが、http:// server:port/file_with_webmethod.aspx/GetLocalTime'のようなurlに投稿すると、あなたのDateTime 。たぶん、 'WebRequest'クラス(https://msdn.microsoft.com/en-us/library/debx8sh9%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396)を調べてください。 – KSib

答えて

0

.NET CLRは、時間を設定するための任意の方法を公開していません。 。あなたがこれをするのが大変な場合は、Win32 SetLocalTime APIimport itで作業する必要があります。

ウェブサーバープロセスがシステムクロックを設定することを禁止することをお勧めします。クロックを設定できると、あらゆる種類のセキュリティー・メカニズムをバイパスすることができます。たとえば、悪意のあるユーザーがセッションや有効期限が切れている証明書を有効にすることができます。

+0

時間をハードコードするときにデバイスの時刻を設定できるようになりましたが、GetLocalTime()で定義されたdatetime関数の値をsetlocaltimeメソッドに渡したいだけです。私が取り組んでいるプロジェクトでは、セキュリティは問題ではありません。 – Programmermid

関連する問題