我的网站面临着对不同操作名称的特定MVC控制器的不需要的机器人调用。它会导致非同一性行为的巨大例外。我们的测井系统几乎充斥着错误。
我们决定采用以下方法作为解决方法。
我们编写了以下代码来实现这一目标。任何人都可以查看方法。
protected override void HandleUnknownAction(string actionName)
{
if (this.ActionInvoker.InvokeAction(this.ControllerContext,
"ReturnErrorForUnknownAction")) return;
}
public ActionResult ReturnErrorForUnknownAction()
{
return Task.Delay(2000).ContinueWith(t =>
{
return new HttpStatusCodeResult(System.Net.HttpStatusCode.NotFound);
}).Result;
}
以上代码工作正常,但不确定" ReturnErrorForUnknownAction "是一个阻止电话。据我所知 Task.Result 阻止当前线程。
我的初衷是在发送404状态之前实现异步延迟。
答案 0 :(得分:0)
使用Task.Result
会导致锁定。将方法更改为......
public async Task<ActionResult> ReturnErrorForUnknownAction()
{
return await Task.Delay(2000).ContinueWith(t =>
{
return new HttpStatusCodeResult(System.Net.HttpStatusCode.NotFound);
});
}