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を使用しています