iT邦幫忙

0

請問怎麼詳細的在網頁上顯示錯誤

是這樣的

今天架站後預覽時遇到一個問題,可是它顯示得太簡單實在不知道該怎麼處理

https://ithelp.ithome.com.tw/upload/images/20190422/20110132xnLDEr5XNs.jpg

所以我想先從登入時查看有沒有連接到資料庫
我在我的coontroller那裡加個try catch,不過還是沒顯示詳細的錯誤
想請問我該如何做才能確定問題在哪裡?

這是我登入時用的controller

  [AllowAnonymous]
        [HttpGet]
        public ActionResult Login(string cid)
        {
            LoginViewModel model = new LoginViewModel();
            try
            {
                
                if (String.IsNullOrWhiteSpace(cid))
                {
                    model.CID = ConfigurationManager.AppSettings["CID"];
                }
                else
                {
                    model.CID = cid;
                }

                CustomerService cSvc = new CustomerService();

                List<CUSTOMER> customers = cSvc.FindCustomers();
                model.Customers = customers;
            }
            catch (Exception ex)
            {
                throw ex;
            }
           

            return View(model);
        }

我的資料庫是oracle搭配EF

2 個回答

0
Homura
iT邦高手 1 級 ‧ 2019-04-22 15:39:34

你不會使用IDE嗎?....
中斷點下在throw ex;這行
然後執行到這邊
滑鼠指到ex看錯誤訊息.....

看更多先前的回應...收起先前的回應...
tenno081 iT邦新手 4 級 ‧ 2019-04-22 15:56:33 檢舉

不好意思,我是在發行狀態下去看的,點開預覽後就只跑出

這麼簡短的一句話,這問題的資料我幾乎都沒找到@@

Homura iT邦高手 1 級 ‧ 2019-04-22 16:32:07 檢舉

tenno081
話說你是不是專案有啟動自訂錯誤頁啊?
去config檔把這行先註解掉

<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/Error" />
小魚 iT邦高手 1 級 ‧ 2019-04-22 18:28:26 檢舉

我猜是被 try catch包住了,
就算開Debug應該也沒用,
而且都上線了最好不要開...

Homura iT邦高手 1 級 ‧ 2019-04-23 13:12:36 檢舉

小魚
先把對外停掉就好了
或是非營業期間修@@

優悠 iT邦新手 4 級 ‧ 2019-04-24 14:21:23 檢舉

笨一點,就中斷點放在剛開始,F10(F11也行)慢慢跑看看。

0
小魚
iT邦高手 1 級 ‧ 2019-04-22 16:00:18

Homura大大回了之後我發現...
在catch裡面throw是什麼情況...
如果正式上線通常是會記錄Log,
如果是直接偵錯的話,
可以考慮這樣

catch (Exception ex)
{
    string text = ex.ToString();
}

然後中斷點下在 } 的地方...
text通常會有很多行,
最好貼到文字編輯器(我都直接貼 純文字文件)觀察問題點.

看更多先前的回應...收起先前的回應...
tenno081 iT邦新手 4 級 ‧ 2019-04-22 16:05:28 檢舉

我聽其他同事說我們有做一個actionlog,如果有問題

好像那邊會有紀錄,不過剛剛去看什麼都沒有

不知道您對oracle有沒有稍微研究

https://ithelp.ithome.com.tw/questions/10193407

不知道我的連線字串有沒有錯誤

小魚 iT邦高手 1 級 ‧ 2019-04-22 16:13:03 檢舉

Oracle沒用過,
所以之前才沒有回,

不過如果沒有記到Log,
應該是哪邊出錯了,
不過你在本機沒辦法測試嗎?
通常應該都要在本機測試過再上線吧...

tenno081 iT邦新手 4 級 ‧ 2019-04-22 16:16:23 檢舉

本機沒有這問題,所以才覺得麻煩,還是感謝您的回答

Homura iT邦高手 1 級 ‧ 2019-04-22 16:16:55 檢舉

如果是發行狀態就是小魚大的ex.toString()寫進log看了@@

小魚 iT邦高手 1 級 ‧ 2019-04-22 16:50:15 檢舉

是的,
我們一般都是把ex.ToString()寫進Log,
順便加一些時間跟其他我們想要紀錄的資訊.

fillano iT邦超人 1 級 ‧ 2019-04-22 18:01:46 檢舉

Inner Exception是透過Exception.InnerException來取得。如果發現這個訊息,就順便把他也寫進Log,不然你還是看不到祥細的錯誤。

小魚 iT邦高手 1 級 ‧ 2019-04-22 18:27:20 檢舉

也是,
應該有一個大的try catch包在外面,
所以才會用throw,
也可以在那個地方寫Log...

tenno081 iT邦新手 4 級 ‧ 2019-04-23 09:38:00 檢舉

能否再請教一下

如果有看到登入畫面,但是帳號密碼輸入後卻跑出

The underlying provider failed on Open.

這可能是哪方面的問題?

小魚 iT邦高手 1 級 ‧ 2019-04-23 13:56:33 檢舉

1.把螢幕關掉
2.把眼睛閉上
3.假的

小魚 iT邦高手 1 級 ‧ 2019-04-23 13:57:14 檢舉

我覺得你們抓Bug的機制有問題,
先把我們之前在討論的Log寫出來再說...

tenno081 iT邦新手 4 級 ‧ 2019-04-23 16:36:54 檢舉

了解,我問過其他人,我們這裡面有安裝NLOG,不過沒人用......

我試著把它弄出來看看

tenno081 iT邦新手 4 級 ‧ 2019-04-24 13:12:10 檢舉
catch (Exception ex)
            {
                string text = ex.ToString();
                FileStream fs = new FileStream(Server.MapPath("~/Msg.txt"), FileMode.OpenOrCreate);
                //獲得位元組陣列
                byte[] data1 = System.Text.Encoding.Default.GetBytes(text);
                //開始寫入
                fs.Write(data1, 0, data1.Length);
                //清空緩衝區、關閉流
                fs.Flush();
                fs.Close();


            }

最後看到了
System.Data.Entity.Core.EntityException: The underlying provider failed on Open. ---> Oracle.ManagedDataAccess.Client.OracleException: Connection request timed out

我要發表回答

立即登入回答