请找到下面的代码:代码分析问题
private static void HandleValidationError(ILogger logger, HttpRequestMessage requestMessage, HttpStatusCode statusCode, string message)
{
logger.LogError(LoggingSources.API, message);
throw new HttpResponseException(requestMessage.CreateErrorResponse(statusCode, message));
}
}
我收到以下CA问题:
损失范围在方法 “ControllerHelper.HandleValidationError前CA2000释放对象( ILogger,HttpRequestMessage, HttpStatusCode,string)',对象 'HttpRequestMessageExtensions.CreateErrorResponse(requestMessage, statusCode,message)'没有沿着所有异常路径设置。调用 System.IDisposable.Dispose在对象 'HttpRequestMessageExtensions.CreateErrorResponse(requestMessage, statusCode,message)'之前的所有引用都不在 范围内。 Tasks.Application.Web.API ControllerHelper.cs 106
上述功能的来电显示是:
public static void CheckForValidDelimitedIntegerInput(ILogger logger, HttpRequestMessage request, char delimiter, string input)
{
if (!string.IsNullOrEmpty(input))
{
try
{
string[] idList = input.Split(delimiter);
for (int i = 0; i < idList.Length; i++)
{
int result;
if (!int.TryParse(idList[i], out result) || result <= 0)
{
HandleValidationError(logger, request, HttpStatusCode.BadRequest, InvalidIntegerOrShort);
}
}
}
catch (HttpResponseException)
{
throw;
}
}
else
{
HandleValidationError(logger, request, HttpStatusCode.BadRequest, InvalidParameter);
}
}
我试过计算器早些时候发布Do I need to dispose an HttpResponseException from Request.CreateResponse()?但它没有发挥出来。
你不需要在'finally'块中调用Dispose。它被包裹在一个'使用'中,它会被丢弃。 – Jonesopolis
是的,我知道。但是我仍然遇到同样的CA问题。 – Varun
你确定要在方法中处理'requestMessage'吗?它正在通过;调用方法不应该处理生命周期吗? –