2016-09-20 55 views
0

我已將.net webapi幫助頁面nuget項目添加到我們的webapi以生成幫助文檔。WebApi幫助頁面不從XML文件中讀取

我在命令行中添加如下:

安裝,包裝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。返回的模型爲空? (也沒有錯誤出現)。

然後我顯示佈局的標題,但沒有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(); 

    } 

回答

0

好吧,

我設法對它進行排序,這是由於啓動.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) 
    { 
    } 

希望這可以幫助別人。