编写用户无效行为的正确方法
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);
}
现在我想在以下时间添加通知:
- 用户调用没有id的方法
- 用户传递了无效的 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
即我有一个控制器动作:
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);
}
现在我想在以下时间添加通知:
- 用户调用没有id的方法
- 用户传递了无效的 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