但当我单击“尝试它”按钮时,Swaggerui会发送
https://localhost:44348/v1/logbook/37193/entry/%7bentryid%7d?entryid=2121321
因此,entryid参数的服务器方法中会出现一个空值。
同样,相关文本输入的占位符将添加到URL中。
为了解决这个问题,我从2.5.0升级到了3.0.0。但它仍在发生。
Swagger API正在访问的控制器操作示例如下:
摘要
///用户日志。
///</summary>
///<param name=“modifiedsince”></param>
///<退货></退货>
///<response code=“200”>分配给用户的日志</response>
///<response code=“204”>没有为用户分配日志</response>
///<response code=“400”>错误状态。有效负载中包含错误消息。</response>
///<response code=“403”>需要身份验证。</response>
[httpget]
[路线(“[行动]/修改开始?})
[MapToApiVersion(“1.0”)]
[产品响应类型(类型(APIResponse<IEnumerable<logbookdto>),200)]
[产品响应类型(204)]
[产品响应类型(typeof(apiresponse<string>),400)]
[产品响应类型(typeof(apiresponse<string>),403)]
公共异步任务<IActionResult>日志(长?修改内容)
{
var logbookdtos=默认值(IEnumerable<logbookdto>);
if(等待authorizeasync(user,identityconstants.policynames.racsuser)&&
等待执行(async()=>logbookdtos=await _mediator.send(
新GetLogbookSquery
{
userid=_currentuser.userid
//lastconfigchange=空
})
)
{
if(logbookdtos.any())
返回OK(新APIResponse<IEnumerable<logbookdto>>data=logbookdtos,outcome=new operationoutcome error=false,message=“”);
返回noContent();
}
返回ErrorResponse(new APIResponse<string>data=errors,outcome=new operationoutcome error=true,message=“”);
}
下面是chrome dev工具的一张图片,描述正在发生的事情:
有人知道发生了什么事吗?我有没有漏掉一个配置文件?long
在服务器上的方法签名中。该参数被调用modifiedSince
.
当我单击Execute时,如果在ModifiedSince文本输入中没有值,则会命中以下URLhttps://localhost:44348/v1/Complication/%7BmodifiedSince%7D
它提取占位符文本并将其包含在URL中(在HTML编码的大括号内)。
https://localhost:44348/v1/Logbook/37193/Entry/2121321
https://localhost:44348/v1/Logbook/37193/Entry/%7BentryId%7D?entryId=2121321
/// <summary>
/// Logbooks of user.
/// </summary>
/// <param name="modifiedSince"></param>
/// <returns></returns>
/// <response code="200">Logbooks assigned to the user</response>
/// <response code="204">No logbooks assigned to the user</response>
/// <response code="400">Error state. Error message included in payload.</response>
/// <response code="403">Authentication required.</response>
[HttpGet]
[Route("[action]/{modifiedSince?}")]
[MapToApiVersion("1.0")]
[ProducesResponseType(typeof(ApiResponse<IEnumerable<LogbookDto>>), 200)]
[ProducesResponseType(204)]
[ProducesResponseType(typeof(ApiResponse<string>), 400)]
[ProducesResponseType(typeof(ApiResponse<string>), 403)]
public async Task<IActionResult> Logbook(long? modifiedSince)
{
var logbookDtos = default(IEnumerable<LogbookDto>);
if (await AuthorizeAsync(User, IdentityConstants.PolicyNames.RacsUser) &&
await Execute(async () => logbookDtos = await _mediator.Send(
new GetLogbooksQuery
{
UserId = _currentUser.UserId
//LastConfigChange = NULL
}))
)
{
if (logbookDtos.Any())
return Ok(new ApiResponse<IEnumerable<LogbookDto>> { Data = logbookDtos, Outcome = new OperationOutcome { Error = false, Message = "" } });
return NoContent();
}
return ErrorResponse(new ApiResponse<string> { Data = Errors, Outcome = new OperationOutcome { Error = true, Message = "" } });
}