iT邦幫忙

0

在Net Core使用 UseExceptionHandler 如何取得Exception當下method的參數(arguments)值?

  • 分享至 

  • xImage

請問我在.Net Core Startup.cs中使用了app.UseExceptionHandler("/Home/Error");做為所有Controller api的Exception Handler。

我目前在HomeController.Error可以透過HttpContext.Features.RawTarget取得發生Exception的API method name,但我要怎麼取得傳入此method的Arguments name & value呢?

如下例:

public IActionResult GetGroup([FromForm] string empCode, [FromForm] string groupCode)
{
   throw new Exception("System testing...")

   return Ok(returnModel);
}

我要在下方Error method取得empCode及groupCode的值

[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{
    var exception = HttpContext.Features.Get<IExceptionHandlerFeature>();

    //這裡要怎麼動態取得Exception method的arguments,以上例言就是取得empCode及groupCode的參數名及參數值
            
    return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
科科
iT邦好手 8 級 ‧ 2022-08-02 10:21:51
最佳解答

試試下面的方法,我自己測試有成功抓到。

[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{
    var collection = HttpContext.Request.Form;

    string response = string.Join(",", collection.Select(kv => kv.Key + ":" + kv.Value).ToArray());

    return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
} 

結果顯示:
https://ithelp.ithome.com.tw/upload/images/20220802/20119561llIXtYTSKq.png

gmlin iT邦新手 5 級 ‧ 2022-08-02 13:40:42 檢舉

好喔 我來試試

科科 iT邦好手 8 級 ‧ 2022-08-03 09:17:03 檢舉

有成功嗎?

gmlin iT邦新手 5 級 ‧ 2022-08-03 11:46:49 檢舉

有,成功了,感謝

我要發表回答

立即登入回答