Asp.net http错误405方法不允许web.API出现错误

Asp.net http错误405方法不允许web.API出现错误,asp.net,iis,asp.net-web-api,dotnetnuke,dotnetnuke-7,Asp.net,Iis,Asp.net Web Api,Dotnetnuke,Dotnetnuke 7,我知道我不是第一个遇到这个问题的人,但我已经尝试了所有建议的修复方法,但仍然无法让它工作。我想在web.API服务和DNN 7中使用DELETE和PUT动词 以下是我的服务代码: routeManager.MapHttpRoute(moduleName, "deleteproduct", "{controller}/{action}/{ID}", New String() {"Krisis.Modules.KrisisStore.Services.Controllers"})

我知道我不是第一个遇到这个问题的人,但我已经尝试了所有建议的修复方法,但仍然无法让它工作。我想在web.API服务和DNN 7中使用DELETE和PUT动词

以下是我的服务代码:

    routeManager.MapHttpRoute(moduleName, "deleteproduct", "{controller}/{action}/{ID}", New String() {"Krisis.Modules.KrisisStore.Services.Controllers"})

    ' DELETE: /deleteproduct/
    <HttpDelete> _
    <ActionName("deleteproduct")> _
    <ValidateAntiForgeryToken> _
    Public Function DeleteProduct_ById_Full(ID As Integer) As HttpResponseMessage
        Try
            ...
        End Try

    End Function
我得到以下错误:

HTTP Error 405.0 - Method Not Allowed

The page you are looking for cannot be displayed because an invalid method (HTTP verb) is being used.
我尝试的是: 我找到并遵循了公认的答案: 我将谓词添加到DNN web.config文件和IIS aplicationhost.config文件中,如下所示:

<add name="ExtensionlessUrl-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" type="System.Web.Handlers.TransferRequestHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="ExtensionlessUrl-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" 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" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrl-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="0" />

解决方案之一是确保禁用webDAV,但我注意到dnnweb.config文件已经注释掉了web.config文件中的这些webDAV行。因此,我还注释掉了applicationhost.config文件中的行

我将从IIS中删除webDAV,看看这是否有帮助,并更新我的问题

问题:
我仍然得到这个错误。有人能帮我找出如何在IIS 8 express上为DNN 7站点的HTTP请求中添加自定义谓词。

好的,发布得太快了。我打开了Windows程序和功能,然后展开了IIS和未选中的webDAV。它将其从IIS中删除,然后一切正常

如果其他人发现了这一点,请注意,在IIS中注释出这些行是不起作用的,我必须从IIS中卸载webDAV

<add name="ExtensionlessUrl-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" type="System.Web.Handlers.TransferRequestHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="ExtensionlessUrl-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" 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" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrl-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="0" />