VS 2017 WebAPI Help Page - No Document Provided

好久不见. 提交于 2019-12-01 06:49:44

I know this answer comes very late, but I ran into the same problem. I could not get Visual Studio 2017 to output the XML Documentation file to the suggested ~/App_Data/XmlDocument.xml location.

However, I found that the correct file is generated under ~/bin/<project name>.xml. So if your project is "TestWebAPI2", then this file should be ~/bin/TestWebAPI2.xml.

(I couldn't see if there was a way to move/copy this file to ~/App_Data, but I didn't look for a very long time)

To get this working, go to ~/Areas/HelpPage/App_Start/HelpPageConfig.vb and change the following line to suit:

config.SetDocumentationProvider(New XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/App_Data/XmlDocument.xml")))

becomes

config.SetDocumentationProvider(New XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/bin/<yourprojectname>.xml")))

(don't forget to replace <yourprojectname> with your WebAPI2 project name)

You can do this properly by

1) If you don't have an App_Data folder, add it by right clicking on the project in Solution Explorer, then Add | Add Asp.Net Folder | App_Data

2) Go to the Build section of Project Properties. Under Output, check XML documentation file. In the edit box, type "App_Data/XmlDocument.xml"

Instructions can be found in this link

.

API help not show Body Parameters descriptions. In class properties missing description info. Just add DescriptionAttribute to property:

    [Description("Simple description")]
    public string Text { get; set; }

This is my fix:

            public string GetDocumentation(MemberInfo member)
            {
                string memberName = String.Format(CultureInfo.InvariantCulture, "{0}.{1}", GetTypeName(member.DeclaringType), member.Name);
                string expression = member.MemberType == MemberTypes.Field ? FieldExpression : PropertyExpression;
                string selectExpression = String.Format(CultureInfo.InvariantCulture, expression, memberName);
                XPathNavigator propertyNode = _documentNavigator.SelectSingleNode(selectExpression); 
                var result = GetTagValue(propertyNode, "summary") ?? GetDescription(member);
                return result; 
            }
            private static string GetDescription(MemberInfo memberInf)
            {
                var result = (memberInf.GetCustomAttribute(typeof(DescriptionAttribute)) as DescriptionAttribute)?.Description;
                return result;
            }

screenshot

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!