编写用户无效行为的正确方法

Correct way to write invalid behavior of user

即我有一个控制器动作:

    public ActionResult Details(int? id)
    {
        telemetryClient.TrackEvent("CompanyDetailPage");
        if (id == null)
        {
            return RedirectToAction("Error", "Error", new { Text = "id is not specified" });
        }
        var company = _companyService.CompanyDetail(id.Value);
        if (company == null)
        {
            return RedirectToAction("Error", "Error", new { Text = "Invalid company id" });

        }

        // create model here and return to client view
        return View(model);
    }

现在我想在以下时间添加通知:

  1. 用户调用没有id的方法
  2. 用户传递了无效的 ID

正确的做法是什么?

添加 "CompanyDetailPageNullId"、"CompanyDetailPageInvalidId" 等事件(指标)?但是对于 CompanyDetailPageInvalidId 我还需要传递 id。

像"CompanyDetailPageError"一样添加事件(指标)并传入参数有什么问题?

或者,可能,追踪踪迹?

总会有很多方法可以做到这一点,none "more correct" 比其他方法要多。这完全取决于你想怎么做。

  • 一个方法是将这 2 条信息添加到您已经作为 custom properties 发送的 1 个事件中。

  • 另一种方法是通过

    为正在进行的请求设置关于现有请求遥测上下文的这两条信息

    var requestTelemetry = System.Web.HttpContext.Current.GetRequestTelemetry();

在那之后,有很多方法可以设置各种警报,或者对失败的请求使用 azure 警报,或者像 Microsoft Flow and the Application Insights connector