ApiDescriptions仅返回GET功能

时间:2013-12-22 06:40:24

标签: vb.net asp.net-web-api

我正在尝试记录我的API。我在控制器中编写了以下代码(VB.NET):

Function Index() As ActionResult
    Dim config = GlobalConfiguration.Configuration
    Dim apiExplorer = config.Services.GetApiExplorer()
    Dim apiDescs = apiExplorer.ApiDescriptions
    Return View(apiExplorer)
End Function

问题是当我调试代码并观察apiDescs中的内容时,我只能看到GET方法 - 我看不到任何DELETE,PUT甚至POST方法。这不是它应该如何运作。

以下是我的一个API的示例:

<HttpGet()>
Public Function GetX(x as integer) as String
'Code goes here
End Function

<HttpPost()>
Public sub PostX(x as integer)
'Code goes here
End Function

GetXApiDescriptions仅返回PostX。所有API中的所有POST,PUT和DELETE方法都是如此。

1 个答案:

答案 0 :(得分:0)

我在网上搜索过,我找不到答案或类似的案例,所以既然我不知道我的项目究竟发生了什么,我已经创建了一个新的MVC WebAPI项目,检查过一切正常,然后比较webconfig个文件,似乎我的项目在<handlers>部分没有这些处理程序:

<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

添加后,我的项目工作正常,ApiDescriptions现在列出了所有方法