给出以下代码(使用.Net Core 2.0和Microsoft.AspNetCore.Mvc v2.0.2):
public class MyFilter : IActionFilter
{
public void OnActionExecuting(ActionExecutingContext context)
{
var mayOrMayNotBeUniquePerRequest = context.ActionDescriptor.Id;
}
public void OnActionExecuted(ActionExecutedContext context)
{
var mayOrMayNotBeUniquePerRequest = context.ActionDescriptor.Id;
}
}
我的问题是,这些ID是否“按要求”?还是“按动作”?我看过这里-https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.abstractions.actiondescriptor?view=aspnetcore-2.0-尚不清楚。
为澄清起见,按照Startup.cs
中的以下代码使用过滤器:
services.AddMvc(config =>
{
config.Filters.Add(new RequestLoggingFilter());
});
谢谢。
答案 0 :(得分:1)
由于我有相同的问题,因此请继续进行后续操作,如果您查看GitHub上的源代码,则每个操作都是一个新值:
public class ActionDescriptor
{
public ActionDescriptor()
{
Id = Guid.NewGuid().ToString();
// ...
}
/// <summary>
/// Gets an id which uniquely identifies the action.
/// </summary>
public string Id { get; }
我的测试表明,调用操作时会生成ID,并且该值保持恒定,直到您的站点停止/启动或回收为止。该值将不同。因此,每个请求的ID都相同,并且不是唯一的。
Id:75c077ac-5402-444d-8a1b-73bdfc30f8ef ID:75c077ac-5402-444d-8a1b-73bdfc30f8ef 回收 ID:ef19524e-4fd3-4386-b15d-e5f3d65beb26
答案 1 :(得分:-1)
答案是“按动作”。我针对两个不同的请求进行了测试,并且ID相同。