用于将XmlDoc集成到Web Api项目中的documentation似乎只处理所有API类型都是WebApi项目的一部分的情况。特别是,它讨论了如何将XML文档重新路由到App_Data/XmlDocument.xml
,并取消注释将会使用该文件的配置文件中的一行。这隐含地只允许一个项目的文档文件。Web API的Xml文档如何包含主项目之外的文档?
但是,在我的设置中,我在常见的“模型”项目中定义了我的请求和响应类型。这意味着,如果我有一个端点定义,如:
[Route("auth/openid/login")]
public async Task<AuthenticationResponse> Login(OpenIdLoginRequest request) { ... }
凡OpenIdLoginRequest
在一个单独的C#项目定义,像这样:
public class OpenIdLoginRequest
{
/// <summary>
/// Represents the OpenId provider that authenticated the user. (i.e. Facebook, Google, etc.)
/// </summary>
[Required]
public string Provider { get; set; }
...
}
尽管XML doccomments的request
参数的属性包含当您查看端点特定的帮助页面时(例如http://localhost/Help/Api/POST-auth-openid-login
),没有文档。
我该怎么做才能让XML文档的子项目中的类型出现在Web API XML文档中?
优秀的答案。我实际上认为构造函数接受一个字符串数组会更简单一些:public XmlDocumentationProvider(string appDataPath)并枚举文档提供程序中的此列表。 –
@CaptainJohn,谢谢!我同意你的建议会很好。不过,我认为我会保留它,因为它保留了'XmlDocumentationProvider'中的大部分修改。我最初要保持这一行不变,并从传入的文件中提取父文件夹,但对我来说这似乎过于简单。 –
太棒了,这正是我一直在寻找的!建议用'var files = Directory.GetFiles(documentPath,“* .xml”)替换'var files ...'行;'如果你(像我一样)不会知道xml文档文件的名称/数量将在那里。根据需要也可以做进一步的过滤。 –