8

Nugetを使用してWeb APIおよびWeb APIの自己文書化を追加した既存のMVCアプリケーションがあります。 Web APIコントローラーは正常に機能しますが(HTTP要求に対する有効な応答を戻す)、ヘルプ・コントローラーは文書化するWeb APIメソッドを検出していません。ASP.Net Web APIヘルプページ空白の出力を返すエリア

ヘルプコントローラのインデックスアクションで、「Configuration.Services.GetApiExplorer()。ApiDescriptions」が0の結果を返しています。

設定されたApiDescriptionsは何ですか?私のAPIをドキュメントに公開するために設定する必要のある設定がありますか?

ヘルプエリアは、他のアプリケーションとは別の領域です。これはコントローラーが私のコントローラーを見つけられないことがわかっている部分を引き起こしていますか?さらに、HelpController自体にスニップされたヘルプを追加しましたが、それでもAPIの説明はありませんでした。

私はAPIコントローラ用の特別なルーティングも持っているので、それが適切かどうかはわかりません。

答えて

6

は、いくつかのより多くの私もthis post最初の記事で述べたように

を指しthis postは、垣間見るはculplitで見つかっ検索した後、この回避策は私のために問題を解く:

<glimpse defaultRuntimePolicy="On" endpointBaseUri="~/Glimpse.axd"> 
<inspectors> 
    <ignoredTypes> 
     <add type="Glimpse.AspNet.Inspector.RoutesInspector, Glimpse.AspNet"/> 
    </ignoredTypes> 
</inspectors> 
</glimpse> 

はこれもあります既知の問題とその回避策については、Glimpse GitHub Issueに記載されています。

+1

TE返事してくれてありがとう、私ドン私は垣間見えると思う! –

+0

ありがとうございました!私の問題を修正しました。 – Frans

2

私は同じ問題を抱えていると私は垣間見るを使用していないと私はこのような問題を解決:暗黙のコンストラクタpublic HelpController() : this(GlobalConfiguration.Configuration)デフォルトが持つコンストラクタと呼ばれていると呼ばれていないため、

ProjectName\Areas\HelpPage\Controllers\HelpController.csファイルのコメントのコンストラクタパラメータpublic HelpController(HttpConfiguration config)およびこのConfigurationプロパティの初期化はincorectです。そして、あなたはこの問題を次のように解決します。

解決策1: コンストラクタのコメント/削除。

public class HelpController : Controller 
     { 
      private const string ErrorViewName = "Error"; 

    //  public HelpController() 
    //   : this(GlobalConfiguration.Configuration) 
    //  { 
    //  } 

    //  public HelpController(HttpConfiguration config) 
    //  { 
    //   Configuration = config; 
    //  } 

      /// <summary> 
      /// GlobalConfiguration By default 
      /// </summary> 
      protected static HttpConfiguration Configuration 
      { 
       get { return GlobalConfiguration.Configuration; } 
      } 

      public ActionResult Index() 
      { 
       ViewBag.DocumentationProvider = Configuration.Services.GetDocumentationProvider(); 
       return View(Configuration.Services.GetApiExplorer().ApiDescriptions); 
      } 
.... 

解決方法2: は[InjectionConstructor]この属性を追加することにより、デフォルトコンストラクタを注入。

public class HelpController : Controller 
    { 
     private const string ErrorViewName = "Error"; 

     [InjectionConstructor] 
     public HelpController() 
      : this(GlobalConfiguration.Configuration) 
     { 
     } 

     public HelpController(HttpConfiguration config) 
     { 
      Configuration = config; 
     } 

     /// <summary> 
     /// GlobalConfiguration By default 
     /// </summary> 
     protected static HttpConfiguration Configuration { get; private set; } 
.... 

問題が解決しました。

+0

InjectionConstructorコンストラクタはどこから来たのですか?統一? –

+0

@ChrisMcKelt yes Chris from Unity – TotPeRo

+0

解決方法1は、null参照例外を引き起こしていたため、私のためには機能しませんでした。 Microsoft.Practices.Unityへの参照を追加する限り、ソリューション2は正常に動作します。明らかにあなたのプロジェクトによってはこれは受け入れられるかもしれませんが、私の場合は助けてくれてありがとう! –

1

私のApplication_Start()メソッドにGlobalConfiguration.Configure (WebApiConfig.Register);を追加することでこれを解決できました。私のアプリケーションはOWINを使用しているので、私は自分のAPIをStartup.Configuration (IAppBuilder app)に登録していました。 NuGet package managerからHelpPagesパッケージをインストールした後

+0

ありがとう、これも私の問題を解決しました。 – aoakeson

0

からWebApplication1\Areas\HelpPage\App_Start\HelpPageConfig.csに移動し、

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

下の行は、またのWebApplicationにApp_Data/XmlDocument.xmlを追加するコメントを解除>プロパティ>ビルドの> XMLドキュメントファイルをチェック

+0

@Rohitフォーマットのおかげで –

関連する問題