2017-12-05 5 views
0

私は受信ページを設定して、JSON文字列としてフォーマットされ、外部サービスから私たちに送信されるデータを収集しようとしています。私たちのデータベース。ASPX-ageのクラスインライン宣言

簡潔にするために、私はこの外部サービスにリンクされた1つのページにすべてのコードを保存したいと思います。

私はJSON文字列を受け取ることができますが、クラスを受け入れないため、逆シリアル化できないようです。

私のコードは以下の通りです。 デバッグのために、データを外部ログにエクスポートしています。 日付が追加されない場合は、問題の原因となっているメッセージに特別なものがある場合は、ログを表示しようとすることができます。

コードからクラスを削除すると、ページが正しく読み込まれます。 クラスを入れた場合、エラーが発生します(オンラインWebサーバーを使用しているため表示されません)。

誰でもこのコードが間違っていることを知っていますか?

<%@ Page Language="C#" %> 
<%@ import namespace="System.Data"%> 
<%@ import namespace="System.Data.SqlClient"%> 
<%@ import namespace="System.IO" %> 
<%@ import namespace="System.Web" %> 
<%@ import namespace="System.Web.Script.Serialization" %> 


<% 

public class MessageClass 
{ 
    public string type; 
    public string text; 
    public string url; 
    public string user_name; 
    public int timestamp; 
} 

// GET THE CONTENT THAT WAS POSTED 
//StreamReader reader = new StreamReader(HttpContext.Current.Request.InputStream); 
//string requestFromPost = reader.ReadToEnd(); 
string requestFromPost = "{type:'image',url:'https://someservice.com/picture.jpg',user_name:'user',timestamp:1511772572733}"; 

Response.Write(requestFromPost); 

// BACKUP THE MESSAGE IN A LOG 
StreamWriter sw; 
try 
{ 
    sw = File.AppendText(Server.MapPath(".\\") + "test.log"); 
    sw.WriteLine("[" + DateTime.Now.ToString("HH:mm:ss") +"] " + requestFromPost); 
    sw.Flush(); 
    sw.Close(); 
} 
catch(Exception ex) 
{ 
    // IGNORE 
} 




StringBuilder sb = new StringBuilder(); 
JavaScriptSerializer ser = new JavaScriptSerializer(); 
//var response = ser.Deserialize<MessageClass>(requestFromPost); 

//Response.Write(response.url); 


// DATABASE STUFF GOES BELOW 

%> 

答えて

0

あなたは本家の私はそれが最高だとは思わない、それは有効な整数

+0

本当にハイタムですが、それ以降はそれをDateTimeに変更する必要がありましたが、私はそれを認識していました。 – Cainnech

0

ではないので、私は私の質問のための解決策を見つけることができたlongにタイムスタンプのデータ型を変更する必要があります。溶液。

私はクラスをタグの中に入れました。

<%@ Page Language="C#" %> 
<%@ import namespace="System.Data"%> 
<%@ import namespace="System.Data.SqlClient"%> 
<%@ import namespace="System.IO" %> 
<%@ import namespace="System.Web" %> 
<%@ import namespace="System.Web.Script.Serialization" %> 

<script runat="server"> 

    public class MessageClass 
    { 
     public string type; 
     public string text; 
     public string url; 
     public string user_name; 
     public long timestamp; 
    } 

</script> 


<% 



// GET THE CONTENT THAT WAS POSTED 
StreamReader reader = new StreamReader(HttpContext.Current.Request.InputStream); 
string requestFromPost = reader.ReadToEnd(); 



// DESERIALIZE THE CONTENT 
JavaScriptSerializer ser = new JavaScriptSerializer(); 
var response = ser.Deserialize<MessageClass>(requestFromPost); 

しかし、誰かが同じコードブロックにそれを保持するためのより良い提案があれば、私はすべての耳です!