我有一个 Web API 应用程序,当部署在 IIS 服务器中时,单独使用 PUT 和 DELETE 方法不起作用。但在本地运行良好。
当我尝试对各种选项进行更多调查时,例如禁用 WebDAV 模块和在处理程序中添加动词。对我来说没有任何作用。当我将应用程序池的托管管道模式从经典更改为集成时,它工作正常。
但是我的客户端服务器必须是经典的,所有其他遗留应用程序才能工作。有什么解决办法吗?
我们使用的是 IIS-10,而我的不是 .net core 应用程序。它的.net框架4.5应用程序。
我的 Web.config 看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="DBConnection" connectionString="*****" providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
</configuration>
我有一个 Web API 应用程序,当部署在 IIS 服务器中时,单独使用 PUT 和 DELETE 方法不起作用。但在本地运行良好。
描述中“不起作用”是什么意思?具体的错误信息和错误代码(子状态代码)是什么?我对此问题进行了一些搜索,发现这两种情况与您的问题类似:“405方法不允许”和“500内部服务器错误”。
您提到您尝试禁用 WebDAV 模块并在处理程序中添加动词。确保配置正确,如下所示:
<system.webServer>
<modules>
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV" />
</handlers>
</system.webServer>
根据您的尝试,我认为您的问题更像是第二种情况(500错误)。你可以尝试这个配置(在
modules element
):
runManagedModulesForWebDavRequests="true"
关于
<modules element>
这个属性的更多细节,请参考官方文档:https://learn.microsoft.com/en-us/iis/configuration/system.webserver/modules/#attributes