我在开发电脑上开发一个网页,能够正常跑起来,然后把代码到服务器电脑上修改,结果就是,打开网页正常,一点击功能就空白页,没有数据,但在服务器电脑上的VS没有任何报错,于是我加了断点,结果又能跑起来了,这是什么情况,有人遇到过这种情况吗?。代码如下,写得有点烂别喷。
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml.Linq;
using System.IO;
using System.Text;
using System.Collections;
using System.Drawing;
using NHibernate.Mapping;
using System.Security.Policy;
using System.Web.Services.Description;
namespace WebApplication1
{
public partial class WebForm1 : System.Web.UI.Page
{
string[] ul = { "https://api.17track.net/track/v2/register", "https://api.17track.net/track/v2/gettrackinfo" }; //0是注册,1是查询
DataTable dtCopy = new DataTable(); //复制表
DataTable dtNew = new DataTable(); //新表,用来合拼表
protected void Page_Load(object sender, EventArgs e)
{
Server.ClearError();//处理完及时清理异常
}
public void GAPI(string url, string x)
{
DataTable dt = new DataTable();
DataRow dr = dt.NewRow();
dt.Clear();
dt.Columns.Add("账单单号");
dt.Columns.Add("发货信息");
dt.Columns.Add("收货信息");
dt.Columns.Add("发货日期");
dt.Columns.Add("签收日期");
dt.Columns.Add("最后状态");
dt.Columns.Add("明细信息");
var client = new HttpClient(); //初始化实例
var request = new HttpRequestMessage //初始化实例
{
//定义一个POST方法
Method = HttpMethod.Post,
RequestUri = new Uri(url), //URL连接
Headers = { { "17token", "9B22CE30211CDB81D218B1E161E90D4C" }, }, //hreaders的值
Content = new StringContent("[\r\n {\r\n \"number\": \"" + x + "\",\r\n }\r\n]") //raw内容
{ Headers = { ContentType = new MediaTypeHeaderValue("application/json") } } //格式
};
using (var response = client.SendAsync(request).Result)
{
if (url == ul[0]) { return; } //如果是注册表就退出
var body = response.Content.ReadAsStringAsync();
string Josnt = body.Result.ToString(); //获取返回数据
JObject JSN = (JObject)JsonConvert.DeserializeObject(Josnt); //把获取的JSON文本转化成JSON数据格式
//int index = 0; //定义索引
try
{
//index = JSN["data"]["accepted"][0]["track_info"]["tracking"]["providers"][1]["events"].ToList().Count; //获取最大长度
dr["账单单号"] = x;
dr["发货信息"] = JSN["data"]["accepted"][0]["track_info"]["tracking"]["providers"][1]["provider"]["alias"].ToString();
dr["收货信息"] = JSN["data"]["accepted"][0]["track_info"]["tracking"]["providers"][0]["provider"]["alias"].ToString();
dr["发货日期"] = JSN["data"]["accepted"][0]["track_info"]["tracking"]["providers"][1]["events"][(JSN["data"]["accepted"][0]["track_info"]["tracking"]["providers"][1]["events"].ToList().Count) - 1]["time_iso"].ToString();
dr["签收日期"] = JSN["data"]["accepted"][0]["track_info"]["tracking"]["providers"][0]["events"][0]["time_iso"].ToString();
dr["最后状态"] = JSN["data"]["accepted"][0]["track_info"]["latest_event"]["time_iso"].ToString() + "," +
JSN["data"]["accepted"][0]["track_info"]["latest_event"]["description"].ToString();
dr["明细信息"] = "【查看详情】";
}
catch (Exception ex)
{
try
{
dr["发货信息"] = JSN["data"]["accepted"][0]["track_info"]["tracking"]["providers"][0]["provider"]["alias"].ToString();
dr["发货日期"] = JSN["data"]["accepted"][0]["track_info"]["tracking"]["providers"][0]["events"][(JSN["data"]["accepted"][0]["track_info"]["tracking"]["providers"][0]["events"].ToList().Count) - 1]["time_iso"].ToString();
dr["签收日期"] = JSN["data"]["accepted"][0]["track_info"]["tracking"]["providers"][0]["events"][1]["time_iso"].ToString();
dr["最后状态"] = JSN["data"]["accepted"][0]["track_info"]["latest_event"]["time_iso"].ToString() + "," +
JSN["data"]["accepted"][0]["track_info"]["latest_event"]["description"].ToString();
dr["明细信息"] = "【查看详情】";
}
catch (Exception exx)
{
dr["账单单号"] = x;
// dr["发货信息"] = JSN["data"]["accepted"][0]["track_info"]["tracking"]["providers"][0]["provider"]["alias"].ToString();
dr["最后状态"] = "单号异常,若是新号稍等3~5分钟后";
dr["明细信息"] = "【查看详情】";
Console.Write(exx);
}
finally
{ Server.ClearError(); }//处理完及时清理异常
Console.Write(ex);
}
finally
{
Server.ClearError();//处理完及时清理异常
}
dt.Rows.Add(dr);
dtCopy = dt.Copy(); //复制dt表数据结构
}
}
protected void btnSeach_Click(object sender, EventArgs e)
{
if (txtNumber.Text == "")
{
Response.Write("<Script>alert('请输入账单号')</Script>");
return;
}
string Snb = txtNumber.Text.Trim();
string[] Stt = Snb.Split('\n'); //获取文本框字符串数组
for (int x = 0; x < Stt.Length; x++)
{
GAPI(ul[0], Stt[x]); //去注册编号
GAPI(ul[1], Stt[x]); //存在就调用查询方法
dtNew.Merge(dtCopy);
}
GridView1.DataSource = dtNew; //绑定合拼表
GridView1.DataBind();
dtCopy.Clear();
dtNew.Clear();
}
}
}
牛啊,你是自己作死,catch 里套 try,不建议这样写,一个不慎就是自己把错误吃了。
你可以在 Glabal.asax里捕获 Application_Error,一般没被自己吃掉的错误都能记录。
你还可以 Application_Start 里订阅应用程序域错误:
AppDomain.CurrentDomain.FirstChanceException += new EventHandler<System.Runtime.ExceptionServices.FirstChanceExceptionEventArgs>(CurrentDomain_FirstChanceException);
这样即使被吃掉的错误也能捕获,但是错误太多了,一般人不会这么写。
没办法,我也能想到也只有这么多了,还是刚刚毕业不久的小菜鸡,每条json数据都不一样,难搞
白屏一般是程序报错了,推测是你写的哪部分代码有问题,或者你部署的站点有其他多余的dll导致程序出错了,而断点巧合的避开了这个错误;你试下把你写的三个方法,都加一个 try catch,看看能不能捕捉到错误
嗯嗯,已经知道什么原因了,原因是报错太多了,导致程序奔溃
为啥不格式化一下json 这样搞 领导不说你?
没有理过我