ASP.Net HelpPages没有显示我的控制器

时间:2016-05-31 13:23:02

标签: c# asp.net asp.net-web-api asp.net-web-api-helppages

我以前来过这里,但这一次我设法比以前更进一步。 我已经following this guide并完成了它所说的一切。 如果我导航到http://localhost:61589/help我实际上看到了帮助页面,但只有介绍,没有说明。

在我的控制器中,我有这样的评论(总是如此):

/// <summary>
/// For all answer related endpoints
/// </summary>
[RoutePrefix("answers")]
public class AnswersController : ApiController
{

    // Readonly properties
    private readonly IUnitOfWork _unitOfWork;
    private readonly AnswerService _service;
    private readonly StateService _stateService;

    /// <summary>
    /// Default constructor
    /// </summary>
    public AnswersController()
    {

        // Map our properties
        this._unitOfWork = new UnitOfWork<DatabaseContext>();
        this._service = new AnswerService(this._unitOfWork);
        this._stateService = new StateService(this._unitOfWork);
    }

    /// <summary>
    /// Get a list of answers
    /// </summary>
    /// <returns></returns>
    [HttpGet]
    [Route("")]
    public async Task<IHttpActionResult> GetAllAsync()
    {
        try
        {

            // Return all our answers
            return Ok(await this._service.GetAllAsync("States.Filters"));

            // If there is an error
        }
        catch (Exception ex)
        {

            // Return our error
            return BadRequest(ex.Message.ToString());
        }
    }

    /// <summary>
    /// Get a answer by id
    /// </summary>
    /// <param name="id">The answer id</param>
    /// <returns></returns>
    [HttpGet]
    [Route("")]
    public async Task<IHttpActionResult> GetAsync(int id)
    {
        try
        {

            // Return all our answers
            return Ok(await this._service.GetAsync(id, "States.Filters"));

            // If there is an error
        }
        catch (Exception ex)
        {

            // Return our error
            return BadRequest(ex.Message.ToString());
        }
    }

    /// <summary>
    /// Create a answer
    /// </summary>
    /// <param name="model">The answer model</param>
    /// <returns></returns>
    [HttpPost]
    [Route("")]
    public async Task<IHttpActionResult> CreateAsync(Answer model)
    {
        try
        {

            // Get our states
            var all = await this._stateService.GetAllAsync("Filters");
            var states = all.Where(m => model.States.Any(s => s.Id == m.Id)).ToList();

            // Create our model
            var answer = new Answer
            {
                Text = model.Text,
                QuestionId = model.QuestionId,
                Order = model.Order,
                States = states
            };

            // Save our model
            this._service.Create(answer);

            // Save the database changes
            await this._unitOfWork.SaveChangesAsync();

            // Return our updated model
            return Ok(answer);

            // If there is an error
        }
        catch (Exception ex)
        {

            // Return our error
            return BadRequest(ex.Message.ToString());
        }
    }

    /// <summary>
    /// Update a answer
    /// </summary>
    /// <param name="model">The answer model</param>
    /// <returns></returns>
    [HttpPut]
    [Route("")]
    public async Task<IHttpActionResult> UpdateAsync(Answer model)
    {
        try
        {

            // Create our model
            var answer = new Answer
            {
                Id = model.Id,
                QuestionId = model.QuestionId,
                Order = model.Order,
                Text = model.Text
            };

            // Save our model
            this._service.Update(answer);

            // Save the database changes
            await this._unitOfWork.SaveChangesAsync();

            // Return our updated model
            return Ok(model);

            // If there is an error
        }
        catch (Exception ex)
        {

            // Return our error
            return BadRequest(ex.Message.ToString());
        }
    }

    /// <summary>
    /// Delete a answer
    /// </summary>
    /// <param name="id">The answer id</param>
    /// <returns></returns>
    [HttpDelete]
    [Route("")]
    public async Task<IHttpActionResult> DeleteAsync(int id)
    {
        try
        {

            // Get our model
            var model = await this._service.GetAsync(id);

            // Save our model
            this._service.Remove(model);

            // Save the database changes
            await this._unitOfWork.SaveChangesAsync();

            // Return Ok
            return Ok();

            // If there is an error
        }
        catch (Exception ex)
        {

            // Return our error
            return BadRequest(ex.Message.ToString());
        }
    }
}

在生成的XmlDocument.xml中,我有这些成员:

<member name="T:Piiick.Api.Controllers.AnswersController">
    <summary>
    For all answer related endpoints
    </summary>
</member>
<member name="M:Piiick.Api.Controllers.AnswersController.#ctor">
    <summary>
    Default constructor
    </summary>
</member>
<member name="M:Piiick.Api.Controllers.AnswersController.GetAllAsync">
    <summary>
    Get a list of answers
    </summary>
    <returns></returns>
</member>
<member name="M:Piiick.Api.Controllers.AnswersController.GetAsync(System.Int32)">
    <summary>
    Get a answer by id
    </summary>
    <param name="id">The answer id</param>
    <returns></returns>
</member>
<member name="M:Piiick.Api.Controllers.AnswersController.CreateAsync(Piiick.Data.Models.Answer)">
    <summary>
    Create a answer
    </summary>
    <param name="model">The answer model</param>
    <returns></returns>
</member>
<member name="M:Piiick.Api.Controllers.AnswersController.UpdateAsync(Piiick.Data.Models.Answer)">
    <summary>
    Update a answer
    </summary>
    <param name="model">The answer model</param>
    <returns></returns>
</member>
<member name="M:Piiick.Api.Controllers.AnswersController.DeleteAsync(System.Int32)">
    <summary>
    Delete a answer
    </summary>
    <param name="id">The answer id</param>
    <returns></returns>
</member>

但它们没有出现在实际的帮助页面上。 有谁知道为什么会发生这种情况?

2 个答案:

答案 0 :(得分:0)

根据http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/creating-api-help-pages

您可以使用XML文档注释来创建文档。要启用此功能,请打开文件Areas / HelpPage / App_Start / HelpPageConfig.cs并取消注释以下行:

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

答案 1 :(得分:0)

原来我只需要添加这一行:

GlobalConfiguration.Configure(WebApiConfig.Register);

配置方法中的 Startup.cs 文件。 一旦添加,它就开始工作了。 对于其他人来说,看起来像这样:

public partial class Startup
{
    public void Configuration(IAppBuilder app)
    {

        // Get our http configuration
        var config = new HttpConfiguration();

        // Register all areas
        AreaRegistration.RegisterAllAreas();  
        GlobalConfiguration.Configure(WebApiConfig.Register);

        // Use our web api
        app.UseWebApi(config);
    }
}