我正在尝试在我的 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 项目(含义:未更改的路由)中尝试了上述方法。正如预期的那样,返回“允许:GET、POST、DELETE”的响应。但是,我遇到了麻烦,将其添加到我正在处理的更大项目中。在较大的项目中,ApiExplorer 中的 ApiDescriptions 列表不包含任何元素。为什么是这样?我怀疑这是由于已实施的自定义路由,尽管这种怀疑的唯一依据是以下链接:
http://forums.asp.net/t/1821651.aspx/1
有没有其他人经历过这个空的 ApiDescription 列表?如果是这样,你找到补救措施了吗?
注意:我使用的是 MCV 4 RC