我正在尝试记录我的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
GetX
内ApiDescriptions
仅返回PostX
。所有API中的所有POST,PUT和DELETE方法都是如此。
答案 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
现在列出了所有方法