WebApi帮助页面无法读取XML文件

时间:2016-09-20 09:25:42

标签: c# asp.net xml asp.net-mvc-4 asp.net-web-api

我已将.net webapi帮助页面nuget项目添加到我们的webapi以生成帮助文档。

我在命令行中添加如下内容;

  

安装包Microsoft.AspNet.WebApi.HelpPage

安装了当前版本。然后我将webapi项目的输出设置为输出到

  

的App_Data / XmlDocument.xml

这是以下示例;

WebApi Help Tutorial

这是正常的。

然后我没有评论该行;

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

再次按照链接。

然而,当我运行我的api并导航到webapi / help url时。返回的模型是null? (似乎没有错误被抛出)。

然后我显示了布局的标题,但没有api文档?

要添加的一件事是我在这个api中使用OAuth。 (虽然它解决了这条路线会导致任何问题吗?)作为参考,这是我的startup.cs

    public void Configuration(IAppBuilder app)
    {
        HttpConfiguration config = new HttpConfiguration();

        LoggingConfig.RegisterLogger();

        config.DependencyResolver = new UnityDependencyResolver(
            UnityConfig.GetConfiguredContainer());


        ConfigureOAuth(app);

        WebApiConfig.Register(config);
        app.UseCors(CorsOptions.AllowAll);
        app.UseWebApi(config);

        AreaRegistration.RegisterAllAreas();

    }

1 个答案:

答案 0 :(得分:0)

确定,

我设法对它进行排序,这是因为正在使用Startup.cs。

因此我需要将其更改为使用Startup.HttpConfiguration而不是GlobalConfiguration.Configuration

继承我更新的Startup.cs

public static HttpConfiguration HttpConfiguration { get; private set; }
    public static OAuthBearerAuthenticationOptions OAuthBearerOptions { get; private set; }

    public void Configuration(IAppBuilder app)
    {
        HttpConfiguration = new HttpConfiguration();

        LoggingConfig.RegisterLogger();

        HttpConfiguration.DependencyResolver = new UnityDependencyResolver(
            UnityConfig.GetConfiguredContainer());


        ConfigureOAuth(app);

        AreaRegistration.RegisterAllAreas();

        WebApiConfig.Register(HttpConfiguration);
        app.UseCors(CorsOptions.AllowAll);
        app.UseWebApi(HttpConfiguration);
    }

然后我必须修改以下帮助文件;

  

HelpPageAreaRegistration.RegisterArea

具体而言,是;

        public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "HelpPage_Default",
            "Help/{action}/{apiId}",
            new { controller = "Help", action = "Index", apiId = UrlParameter.Optional });

        HelpPageConfig.Register(Startup.HttpConfiguration);
    }

  

HelpController.cs

    public HelpController()
        : this(Startup.HttpConfiguration)
    {
    }

希望这有助于某人。