Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何处理.NET内核中参数类型错误的请求?_C#_Api - Fatal编程技术网

C# 如何处理.NET内核中参数类型错误的请求?

C# 如何处理.NET内核中参数类型错误的请求?,c#,api,C#,Api,所以我有一个问题,我有一个端点 [HttpGet(“get/{id}”)] 公共异步任务Get([FromRoute]long?id) { if(id==null) 返回请求(); var result=wait Mediator.Send(新的GetIssueByIdQuery(id)); 返回CreateResponse(结果); } 如果我发出这样的请求 ..../get/1 一切正常。但如果我给出不同类型的id参数,例如: …/get/asd 服务器自动响应一些通用验证错误和404。由

所以我有一个问题,我有一个端点

[HttpGet(“get/{id}”)]
公共异步任务Get([FromRoute]long?id)
{
if(id==null)
返回请求();
var result=wait Mediator.Send(新的GetIssueByIdQuery(id));
返回CreateResponse(结果);
}
如果我发出这样的请求

..../get/1

一切正常。但如果我给出不同类型的id参数,例如:

…/get/asd


服务器自动响应一些通用验证错误和404。由于请求甚至没有到达端点,我如何自己处理这种情况,并向客户端返回一些更具描述性的信息

您可以将
id
参数的类型更改为字符串,并尝试自己对其进行解析:

public async Task<IActionResult> Get([FromRoute] string id)
{
    if (string.IsNullOrWhiteSpace(id))
        return BadRequest($"{nameof(id)} parameter should not be empty");
    if (!long.TryParse(id, out var longValue))
        return BadRequest($"{nameof(id)} should be convertible to long");

    var result = await Mediator.Send(new GetIssueByIdQuery(longValue));
    return CreateResponse(result);
}
公共异步任务获取([FromRoute]字符串id)
{
if(string.IsNullOrWhiteSpace(id))
返回BadRequest($“{nameof(id)}参数不应为空”);
如果(!long.TryParse(id,out var longValue))
return-BadRequest($“{nameof(id)}应可转换为long”);
var result=wait Mediator.Send(新的GetIssueByIdQuery(longValue));
返回CreateResponse(结果);
}

您可以将
id
参数的类型更改为字符串,并尝试自己解析它:

public async Task<IActionResult> Get([FromRoute] string id)
{
    if (string.IsNullOrWhiteSpace(id))
        return BadRequest($"{nameof(id)} parameter should not be empty");
    if (!long.TryParse(id, out var longValue))
        return BadRequest($"{nameof(id)} should be convertible to long");

    var result = await Mediator.Send(new GetIssueByIdQuery(longValue));
    return CreateResponse(result);
}
公共异步任务获取([FromRoute]字符串id)
{
if(string.IsNullOrWhiteSpace(id))
返回BadRequest($“{nameof(id)}参数不应为空”);
如果(!long.TryParse(id,out var longValue))
return-BadRequest($“{nameof(id)}应可转换为long”);
var result=wait Mediator.Send(新的GetIssueByIdQuery(longValue));
返回CreateResponse(结果);
}

这是否回答了您的问题?这回答了你的问题吗?