Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法在生产中执行GCM Android通知。它在本地机器上工作_C#_Asp.net_Google Cloud Messaging - Fatal编程技术网

C# 无法在生产中执行GCM Android通知。它在本地机器上工作

C# 无法在生产中执行GCM Android通知。它在本地机器上工作,c#,asp.net,google-cloud-messaging,C#,Asp.net,Google Cloud Messaging,我无法在生产环境中运行GCM通知代码。尽管它在本地服务器上正常工作 private void SendNotificationPresent() { try { con.Open(); string query = "Select distinct MS.Std_Id,TSA.Cls_Id,TSA.Cls_Div_Id,MSC.Cls_Name,MCD.Div_Grade,TUL.User_GCM_R

我无法在生产环境中运行GCM通知代码。尽管它在本地服务器上正常工作

    private void SendNotificationPresent()
    {
        try
        {
            con.Open();
            string query = "Select distinct MS.Std_Id,TSA.Cls_Id,TSA.Cls_Div_Id,MSC.Cls_Name,MCD.Div_Grade,TUL.User_GCM_Reg_Id,TUL.User_Id,TSA.Act_Remark,MIN(TSA.Act_Sch_Id),MS.Std_Fname+' '+MS.Std_Lname AS StudentName, Format(Getdate(), 'dd/MM/yyyy HH:mm:ss')  as date FROM  Trn_Student_Act_Schedule TSA  Inner Join Mst_Students MS On MS.Std_Id=TSA.Std_Id Inner Join Trn_User_Login TUL On TUL.User_Id=MS.Parent_F_Id OR TUL.User_Id=MS.Parent_M_Id Inner Join Mst_School_Classes MSC on MSC.Cls_Id=TSA.Cls_Id  Inner Join Mst_Class_Division MCD ON MCD.Div_Id=TSA.Cls_Div_Id WHERE MS.STD_ID = '" + objlog.Std_Id + "'and TSA.Act_Remark='Present'  And TUL.User_GCM_Reg_Id<>''  and format(TSA.Date_From,'dd/MM/yyyy')= CONVERT(date,GETDATE()) Group by MS.Std_Id,TSA.Cls_Id,TSA.Cls_Div_Id,MSC.Cls_Name,MCD.Div_Grade,TUL.User_GCM_Reg_Id,TUL.User_Id,TSA.Act_Remark,MS.Std_Fname,MS.Std_Lname";
            SqlCommand cmd = new SqlCommand(query, con);
            con.Close();
            DataTable dt = new DataTable();
            SqlDataAdapter da = new SqlDataAdapter(cmd);

            da.Fill(dt);

            if (dt.Rows.Count > 0)
            {
                foreach (DataRow dtRow in dt.Rows)
                {
                    int Event_Id = Convert.ToInt32(dtRow[8].ToString());
                    string Details = "Present";
                    string Event_Name = "Attendance";
                    int Cls_Id = Convert.ToInt32(dtRow[1].ToString());
                    int Div_Id = Convert.ToInt32(dtRow[2].ToString());
                    int Std_Id = Convert.ToInt32(dtRow[0].ToString());
                    int Parent_Id = Convert.ToInt32(dtRow[6].ToString());

                    int User_Id = Convert.ToInt32(dtRow[6].ToString());
                    string Reg_Id = dtRow[5].ToString();
                    string studentname = dtRow[9].ToString();
                    string DateNow = dtRow[10].ToString();

                    con.Open();
                    SqlCommand CMDI = new SqlCommand("insert into RFID_Prenotification (std_id) values ('"+ Std_Id + "')", con);
                    CMDI.ExecuteNonQuery();
                    con.Close();
                    var applicationID = "xxxxxxxxxxxxxxxxxxxx";  // applicationID means google Api key 
                    var SENDER_ID = "xxxxxxxxxxxxxxx"; // SENDER_ID is nothing but your ProjectID (from API Console- google code) 

                    var value = "RELAX! " + "" + studentname + "" + " marked as PRESENT for the day.";

                    //DateTime crnttime = DateTime.Now;
                    //TimeZoneInfo tzn = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time");
                    //DateTime IndianTme = TimeZoneInfo.ConvertTime(crnttime, tzn);
                    //string Datee = IndianTme.ToString("dd/MM/yyyy hh:mm:ss tt");
                    //lbldate.Text = Date;

                    //DateTime crnttime1 = DateTime.Now;
                    //TimeZoneInfo tzn1 = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time");
                    //DateTime IndianTme1 = TimeZoneInfo.ConvertTime(crnttime1, tzn1);
                    //string Date = IndianTme1.ToString("dd/MM/yyyy");
                    //lbldatee.Text = Date;

                    WebRequest tRequest;

                    tRequest = WebRequest.Create("https://android.googleapis.com/gcm/send");
                    tRequest.Method = "post";
                    tRequest.ContentType = " application/json";
                    tRequest.Headers.Add(string.Format("Authorization: key={0}", applicationID));
                    tRequest.Headers.Add(string.Format("Sender: id={0}", SENDER_ID));
                    string postData = "{\"collapse_key\":\"score_update\",\"time_to_live\":345600,\"delay_while_idle\":true,\"data\": { \"message\" : " + "\"" + value + "\",\"Event_Id\" : " + "\"" + Event_Id + "\",\"Details\" : " + "\"" + Details + "\",\"From_Date\" : " + "\"" + DateNow + "\",\"To_Date\" : " + "\"" + DateNow + "\",\"Event_Name\" : " + "\"" + Event_Name + "\",\"Cls_Id\" : " + "\"" +  Cls_Id + "\",\"Div_Id\" : " + "\"" + Div_Id + "\",\"Std_Id\" : " + "\"" + Std_Id + "\",\"Parent_Id\" : " + "\"" + Parent_Id + "\",\"time\": " + "\"" + DateNow + "\"},\"registration_ids\":[\"" + Reg_Id + "\"]}";
                    Byte[] byteArray = Encoding.UTF8.GetBytes(postData);
                    tRequest.ContentLength = byteArray.Length;
                    Stream dataStream = tRequest.GetRequestStream();
                    dataStream.Write(byteArray, 0, byteArray.Length);
                    dataStream.Close();
                    WebResponse tResponse = tRequest.GetResponse();
                    dataStream = tResponse.GetResponseStream();
                    StreamReader tReader = new StreamReader(dataStream);
                    String sResponseFromServer = tReader.ReadToEnd();   //Get response from GCM server.                       
                    tReader.Close();
                    dataStream.Close();
                    tResponse.Close();

                    Alt_AutoIncreament_ID();
                    Objalrt.Action = "InserNotification1";
                    Objalrt.StrName = "SP_Set_App_Alert";
                    Objalrt.Alt_Id = Convert.ToInt32(Alt_Increment_Id).ToString();
                    Objalrt.User_Id = Convert.ToInt32(User_Id).ToString();
                    Objalrt.Std_Id = Convert.ToInt32(Std_Id).ToString();
                    Objalrt.Alt_Desc = value;
                    Objalrt.User_GCM_Reg_Id = "Default";
                    Objalrt.Log_Date = Convert.ToDateTime(DateNow);
                    int Count = Set_App_Alert_DataLayer.setdata(Objalrt);

                    Reg_Id = null;
                }
                con.Close();
            }
        }
        catch (Exception ex)
        {
            System.ArgumentException argEx = new System.ArgumentException("Index is out of range", "index", ex);
            throw argEx;
        }
    }`
private void SendNotificationPresent()
{
尝试
{
con.Open();
string query=“选择不同的MS.Std\U Id、TSA.Cls\U Id、TSA.Cls\U Div\U Id、MSC.Cls\U名称、MCD.Div\U等级、TUL.User\U GCM\U Reg\U Id、TUL.User\U Id、TSA.Act\U备注、MIN(TSA.Act\U Sch\U Id)、MS.Std\U Fname+“”+MS.Std\U Lname作为学生姓名、格式(Getdate(),'dd/MM/YYYYYY HH:MM:ss'))自Trn_学生法案时间表TSA内部加入Mst_学生MS于MS.Std_Id=TSA.Std_Id内部加入Trn_用户登录TUL于TUL.User_Id=MS.Parent_F_Id或TUL.User_Id=MS.Parent_M_Id内部加入Mst_学校班级MSC.Cls_Id=TSA.Cls_Id内部加入Mst班级MCD.Div上MCD.Div_Id=TSA.Cls Div=TSA.Cls Div=TSA.CLU Div=TSA.CLU Div=OBU Id其中MS+“'and TSA.Act\u Remark='Present'和TUL.User\u GCM\u Reg\u Id''和格式(TSA.Date\u From,'dd/MM/yyyyy')=转换(Date,GETDATE())组,按MS.Std\u Id、TSA.Cls\u Id、TSA.Cls\u Div Id、MSC.Cls\u Name、MCD.Div\u Grade、TUL.User\u Reg\u Id、TUL.User\u Id、TSA.Act\u Remark、MS.Std\u Fname、MS.Std\u lnu”;
SqlCommand cmd=新的SqlCommand(查询,con);
con.Close();
DataTable dt=新的DataTable();
SqlDataAdapter da=新的SqlDataAdapter(cmd);
da.填充(dt);
如果(dt.Rows.Count>0)
{
foreach(数据行中的数据行)
{
int Event_Id=Convert.ToInt32(dtRow[8].ToString());
string Details=“Present”;
字符串Event_Name=“出席”;
int Cls_Id=Convert.ToInt32(dtRow[1].ToString());
int Div_Id=Convert.ToInt32(dtRow[2].ToString());
int Std_Id=Convert.ToInt32(dtRow[0].ToString());
int Parent_Id=Convert.ToInt32(dtRow[6].ToString());
int User_Id=Convert.ToInt32(dtRow[6].ToString());
字符串Reg_Id=dtRow[5]。ToString();
字符串studentname=dtRow[9].ToString();
字符串DateNow=dtRow[10].ToString();
con.Open();
SqlCommand CMDI=新的SqlCommand(“插入RFID预通知(std_id)值(“+std_id+”)”,con);
CMDI.ExecuteNonQuery();
con.Close();
var applicationID=“xxxxxxxxxxxxxxxxxxxxx”;//applicationID表示谷歌Api密钥
var SENDER\u ID=“xxxxxxxxxxxxx”;//SENDER\u ID只是您的项目ID(来自API控制台-谷歌代码)
var value=“RELAX!”+++studentname++“标记为当天出席。”;
//DateTime crnttime=DateTime.Now;
//TimeZoneInfo tzn=TimeZoneInfo.FindSystemTimeZoneById(“印度标准时间”);
//DateTime IndianTme=TimeZoneInfo.ConvertTime(crnttime,tzn);
//字符串date=IndianTme.ToString(“dd/MM/yyyy hh:MM:ss tt”);
//lbldate.Text=日期;
//DateTime crnttime1=DateTime.Now;
//TimeZoneInfo tzn1=TimeZoneInfo.FindSystemTimeZoneById(“印度标准时间”);
//DateTime IndianTme1=TimeZoneInfo.ConvertTime(crnttime1,tzn1);
//字符串日期=IndianTme1.ToString(“dd/MM/yyyy”);
//lbldatee.Text=日期;
WebRequest-tRequest;
tRequest=WebRequest.Create(“https://android.googleapis.com/gcm/send");
tRequest.Method=“post”;
tRequest.ContentType=“应用程序/json”;
添加(string.Format(“Authorization:key={0}”,applicationID));
添加(string.Format(“Sender:id={0}”,Sender_id));
字符串postData=“{\'collapse\'key\”:“score\'u update\”,“time\'u to\'u live\”:345600,\'delay\'u when\'u idle\':true,\'data\':{\'message\':“+”+“\'Id\”,“Event\'Id\”:“+”,“Details\”:“+“+”,“From\'Date Date\”:“+”,“From Date\”:“+“+”,“DateNow+”,“to\”,“Event\'Date\”+“+”,“Event\”+”,“Event\”,“Event\”+”+“+”,“Event\”:“Event\”+”,“Event\”+”,“Event\”+”+事件名称+“\”,“Cls\U Id\”:“+”+“+”Cls\U Id+“\”,“Div\u Id\”:“+”+“+”+”Div\u Id+“\”,“Std\u Id\”:“+”+“+”,“父Id+”:“+”+“+”,“时间:“+”+“+”+“+”+日期现在”,“注册Id:“[”+“+”;
Byte[]byteArray=Encoding.UTF8.GetBytes(postData);
tRequest.ContentLength=byteArray.Length;
Stream dataStream=tRequest.GetRequestStream();
写入(byteArray,0,byteArray.Length);
dataStream.Close();
WebResponse-treresponse=tRequest.GetResponse();
dataStream=treresponse.GetResponseStream();
StreamReader tReader=新的StreamReader(数据流);
字符串sResponseFromServer=tReader.ReadToEnd();//从GCM服务器获取响应。
tReader.Close();
dataStream.Close();
t响应关闭();
Alt_autoincrement_ID();
Objalrt.Action=“插入通知1”;
Objalrt.StrName=“设置应用程序警报”;
Objalrt.Alt_Id=Convert.ToInt32(Alt_Increment_Id).ToString();
Objalrt.User_Id=Convert.ToInt32(User_Id).ToString();
Objalrt.Std_Id=Convert.ToInt32(Std_Id).ToString();
Objalrt.Alt_Desc=值;
Objalrt.User\u GCM\u Reg\u Id=“默认”;
Objalrt.Log_Date=Convert.ToDateTime(DateNow);
int Count=Set\u App\u Alert\u DataLayer.setdata(Objalrt);
Reg_Id=null;