14

WebサービスのコントローラーにOptionsメソッドを実装しようとしています。このメソッドは、コントローラーに関連付けられたURIエンドポイントの有効なHTTPメソッドを含むメッセージを返します。私のOptionsメソッドは次のようになります。

public HttpResponseMessage Options()
{
    var resp = new HttpResponseMessage();
    resp.Content = new StringContent("");

    var apiExplorer = GlobalConfiguration.Configuration.Services
        .GetApiExplorer();

    foreach (ApiDescription api in apiExplorer.ApiDescriptions)
    {
        resp.Content.Headers.Add("Allow", api.HttpMethod.Method);
    }

    return resp;
}

Get、Post、およびDeleteメソッドを使用して、コントローラー内の新しいWeb Apiプロジェクト(含意:変更されていないルーティング)で上記のメソッドを試しました。予想どおり、「Allow:GET、POST、DELETE」の応答が返されます。私は問題を抱えていますが、これを私が取り組んでいるより大きなプロジェクトに追加します。大規模なプロジェクトでは、ApiExplorer内のApiDescriptionsリストに要素が含まれていません。どうしてこれなの?実装されているカスタムルーティングが原因であると思われますが、その疑いの唯一の根拠は次のリンクです。

http://forums.asp.net/t/1821651.aspx/1

他の誰かがこの空のApiDescriptionリストを経験しましたか?もしそうなら、あなたは救済策を見つけましたか?

注:私はMCV4RCを使用しています

4

3 に答える 3

3

Glimpse を使用している場合は、ルート インスペクターを無効にする必要がある場合があります。

<glimpse defaultRuntimePolicy="On" endpointBaseUri="~/Glimpse.axd">
  <logging level="Off" />
  <tabs>
    <ignoredTypes>
      <add type="Glimpse.AspNet.Tab.Routes, Glimpse.AspNet" />
    </ignoredTypes>
  </tabs>
  <inspectors>
    <ignoredTypes>
      <add type="Glimpse.AspNet.Inspector.RoutesInspector, Glimpse.AspNet" />
    </ignoredTypes>
  </inspectors>
</glimpse>

Glimpse は、HostedHttpRouteCollection の列挙を壊す RouteProxies を作成します: https://github.com/mono/aspnetwebstack/blob/master/src/System.Web.Http.WebHost/Routing/HostedHttpRouteCollection.cs

リンクがモノ用であることは知っていますが、標準の.Netにも同じことが当てはまります。

于 2016-03-04T09:31:24.700 に答える
1

昨日リリースされた WebApi の RTM へのアップグレードを検討してから、同じく昨日リリースされた新しくリリースされたASP.NET WebApi ヘルプ ページ (プレビュー)を確認してください。

このパッケージは、サイトの Web API のヘルプ ページ コンテンツを自動的に生成します。ヘルプ ページへの訪問者は、このコンテンツを使用して Web API を呼び出す方法を学習できます。ヘルプ ページで生成されるものはすべて、ASP.NET MVC と Razor を使用して完全にカスタマイズできます。

カバーの下に ApiExplorer を実装しています。

于 2012-08-16T19:46:10.103 に答える