从本地主机删除方法工作正常,但从 IIS 不起作用 - Web API

本文关键字:IIS 但从 不起作用 API Web 主机 删除 工作 方法 | 更新日期: 2023-09-27 18:34:01

我正在尝试从数据库中删除对象;我有一个 UI 层和服务层,我已经在 IIS 上分别加载了 UI 和服务。我正在使用 asp.net web api,并使用 http 删除方法发送请求。因此,当我运行服务(使用 f5)并将删除请求发送给http:// localhost:15957/一切都正常时。但是当我将请求发送到 IIS 中托管的站点时,会收到此错误:

HTTP Error 405.0 - Method Not Allowed

我查看响应标头,并看到意外的标头:

Allow:GET, HEAD, OPTIONS, TRACE

我不添加此标头。

在服务层的 Web.config 上,我将以下内容添加到 CORS 的标头中:

<customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="Content-Type, x-xsrf-token" />
        <add name="Access-Control-Allow-Methods" value="PUT, GET, POST, DELETE" />
</customHeaders>

我的问题是什么?

从本地主机删除方法工作正常,但从 IIS 不起作用 - Web API

更新 IIS web.config 文件以允许所需的所有内容。只需检查是否指定了所需的。

<system.webServer>
    <handlers>
        <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"/>
    </handlers>
</system.webServer>
默认情况下,

IIS 中的处理程序映射可能仅设置为允许 GET、HEAD、OPTIONS、TRACE。

您需要转到 IIS,进入站点的处理程序映射(它可能是以 ExtensionlessURLHandler 开头的映射之一...),右键单击然后编辑,然后单击"请求限制"按钮并转到"谓词"选项卡。然后,您可以添加所需的其他谓词,或选择"所有谓词"。

您还应该能够在 web.config 中配置它,但我总是在 IIS 中这样做。

相关文章: