3

您可以使用ApiExplorerSettingsAttributeIgnoreApi属性设置为不生成帮助信息来装饰控制器或操作方法。如果您尝试将其应用于操作方法的属性,则会出现错误:

public HttpResponseMessage Post([ApiExplorerSettings(IgnoreApi = true)]HttpRequestMessage request, ... )

错误 2 属性“ApiExplorerSettings”在此声明类型上无效。它仅对“类、方法”声明有效。

保持控制器操作可测试的一个常见约定是接受一个HttpRequestMessage参数,但这是一个实现细节,而不是您的 API 使用者应该知道的事情。

如何防止 ApiExplorer 在生成帮助页面时包含此参数?

4

1 回答 1

2

为了清楚起见......通过这个“ if you try to apply the same to an action method's attribute”,你的意思是你试图应用到参数吗?

- 一个快速的解决方法是向我们在这个文件中的现有 CancellationToken 检查添加一个额外的检查:\Areas\HelpPage\Views\Help\DisplayTemplates\Parameters.cshtml

// Don't show CancellationToken because it's a special parameter
    if (!typeof(CancellationToken).IsAssignableFrom(parameter.ParameterDescriptor.ParameterType))
    {

-此外,您可以避免将 HttpRequestMessage 作为操作参数,因为您可以从控制器上的 Request 属性获取当前请求,但您希望它作为测试参数......是吗?

于 2013-05-20T20:06:54.523 回答