首页 新闻 搜索 专区 学院

ASP.net 关于我的的程序没有报错,但就是跑不起来的错误。

0
悬赏园豆:15 [已解决问题] 解决于 2022-12-16 11:44

我在开发电脑上开发一个网页,能够正常跑起来,然后把代码到服务器电脑上修改,结果就是,打开网页正常,一点击功能就空白页,没有数据,但在服务器电脑上的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();
    }


}

}

何生有二十六画的主页 何生有二十六画 | 初学一级 | 园豆:166
提问于:2022-12-01 15:07
< >
分享
最佳答案
0

牛啊,你是自己作死,catch 里套 try,不建议这样写,一个不慎就是自己把错误吃了。

你可以在 Glabal.asax里捕获 Application_Error,一般没被自己吃掉的错误都能记录。

你还可以 Application_Start 里订阅应用程序域错误:

AppDomain.CurrentDomain.FirstChanceException += new EventHandler<System.Runtime.ExceptionServices.FirstChanceExceptionEventArgs>(CurrentDomain_FirstChanceException);

这样即使被吃掉的错误也能捕获,但是错误太多了,一般人不会这么写。

收获园豆:15
空明流光 | 初学一级 |园豆:32 | 2022-12-05 14:19

没办法,我也能想到也只有这么多了,还是刚刚毕业不久的小菜鸡,每条json数据都不一样,难搞

何生有二十六画 | 园豆:166 (初学一级) | 2022-12-05 14:43
其他回答(2)
0

白屏一般是程序报错了,推测是你写的哪部分代码有问题,或者你部署的站点有其他多余的dll导致程序出错了,而断点巧合的避开了这个错误;你试下把你写的三个方法,都加一个 try catch,看看能不能捕捉到错误

三人乐乐 | 园豆:4593 (老鸟四级) | 2022-12-02 17:17

嗯嗯,已经知道什么原因了,原因是报错太多了,导致程序奔溃

支持(0) 反对(0) 何生有二十六画 | 园豆:166 (初学一级) | 2022-12-05 14:43
0

为啥不格式化一下json 这样搞 领导不说你?

码上有钱(why) | 园豆:213 (菜鸟二级) | 2022-12-23 11:23

没有理过我

支持(0) 反对(0) 何生有二十六画 | 园豆:166 (初学一级) | 2022-12-28 14:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册