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参数进行测试。此外,您的工作环境非常好,完全可以接受。非常感谢您抽出时间回答如此多的问题。团队中有一位对这件事了如指掌的人真的很有帮助。:)