Asp.net web api 操作参数的WebApi ApiExplorer ApiExplorerSettingsAttribute和IgnoreApi

Asp.net web api 操作参数的WebApi ApiExplorer ApiExplorerSettingsAttribute和IgnoreApi,asp.net-web-api,asp.net-mvc-apiexplorer,Asp.net Web Api,Asp.net Mvc Apiexplorer,您可以通过将IgnoreApi属性设置为不生成帮助信息来装饰控制器或操作方法。如果尝试将相同的应用于操作方法的属性,则会出现错误: public HttpResponseMessage Post([ApiExplorerSettings(IgnoreApi = true)]HttpRequestMessage request, ... ) 错误2属性“ApiExplorerSettings”对此声明类型无效。它仅对“类,方法”声明有效 保持控制器操作可测试性的一个常见约定是接受HttpRequ

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

public HttpResponseMessage Post([ApiExplorerSettings(IgnoreApi = true)]HttpRequestMessage request, ... )
错误2属性“ApiExplorerSettings”对此声明类型无效。它仅对“类,方法”声明有效

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

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

为清楚起见…通过此“
如果您尝试将相同的应用于操作方法的属性,您的意思是尝试应用于此参数吗

-一个快速修复方法是在现有的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属性获取当前请求,但您希望它作为测试的参数……是吗?

“…尝试应用于参数”,这正是我的意思。我在这个问题上加了一个例子。你的最后一点在这两方面都是准确的。Request属性是可用的,但我喜欢显式的Request参数进行测试。此外,您的工作环境非常好,完全可以接受。非常感谢您抽出时间回答如此多的问题。团队中有一位对这件事了如指掌的人真的很有帮助。:)