ChatGPT解决这个技术问题 Extra ChatGPT

ASP.NET Web API - 不允许 PUT 和 DELETE 动词 - IIS 8

我最近从 Visual Studio 2010 升级到了 Visual Studio 2012 RC。安装程序还会安装 IIS 8 Express,Visual Studio 现在将其用作默认 Web 服务器。

IIS 8 阻止了我使用 PUT AND DELETE 动词的 WEB API 请求。 IIS 返回 405 错误 The requested resource does not support http method 'PUT'

我知道人们过去对此有过疑问,并且在 Stack Overflow 上有几条关于它的消息。使用 IIS 7 Express 的解决方案是卸载 WebDav。不幸的是,我没有看到任何使用 IIS 8 的方法。

我尝试从 applicationhost.config 中编辑 WebDav 部分,但这没有帮助。例如,我从配置文件中删除了 <add name="WebDAVModule" image="%IIS_BIN%\webdav.dll" />

我在这上面花了太长时间。必须有一种简单的方法来启用 PUT 和 DELETE?

这在 RTM 版本中仍然存在问题。只是在这上面浪费了 3 个小时......所需要的只是将额外的动词添加到 ExtensionlessUrl-Integrated-4.0
我不认为这是坏的,而是设计使然。我认为更改默认行为会干扰 WebDAV 并破坏向后兼容性。安装 WebDAV 时,这也不适用于 IIS7。
我也只是在这篇文章上浪费了 3 个小时……在这篇文章发布 6 年后。

M
Mark

好的。我终于明白了这一点。您需要跳过一些障碍才能使 PUT 和 DELETE 动词在 IIS8 中正常工作。事实上,如果您安装 VS 2012 的候选版本并创建一个新的 WEB API 项目,您会发现示例 PUT 和 DELETE 方法返回 404 错误。

要将 PUT 和 DELETE 动词与 Web API 一起使用,您需要编辑 %userprofile%\documents\iisexpress\config\applicationhost.config 并将动词添加到 ExtensionlessUrl 处理程序,如下所示:

更改此行:

<add name="ExtensionlessUrl-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

至:

<add name="ExtensionlessUrl-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

除了上述之外,您还应确保 WebDAV 不会干扰您的请求。这可以通过注释掉 applicationhost.config 中的以下行来完成。

<add name="WebDAVModule" image="%IIS_BIN%\webdav.dll" />
<add name="WebDAVModule" /> 
<add name="WebDAV" path="*" verb="PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK" modules="WebDAVModule" resourceType="Unspecified" requireAccess="None" />

另请注意,默认的 Web API 约定是您的方法名称应与调用的 HTTP 动词相同。例如,如果您要发送 HTTP 删除请求,则默认情况下,您的方法应命名为 Delete。


对于 IIS8 上的 OPTIONS 动词的类似问题(在您的处理程序之前拦截其他东西),请尝试在 web.config 中使用 。就此而言,我建议在您的本地 web.config 中使用“删除”技术,而不是在可能的情况下使用 applicationhost.config 作为一般规则
与其在服务器级别删除可能会产生连锁反应的 WebDAV,不如将其从您的项目中删除,如下所示:stackoverflow.com/a/14465655/428280
然后什么?甚至它可以在本地工作,但不能在 Azure 上工作
指示修改系统设置的答案,即使在开发机器上,也不是答案。这解决了一个症状,但对团队和生产并没有真正的帮助。你会在每台机器上复制这个吗?查看 Santosh Sah 的答案。
此外,我还需要按照 Santosh Sah's answer 从模块部分中删除 WebDAVModule
S
Santosh Prasad Sah

如下更改您的 Web.Config 文件。它会像魅力一样。

在节点 <system.webServer> 中添加以下代码部分

<modules runAllManagedModulesForAllRequests="true">
  <remove name="WebDAVModule"/>
</modules>

添加后,您的 Web.Config 将如下所示

<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true">
        <remove name="WebDAVModule"/>
    </modules>
    <httpProtocol>
    <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="Content-Type" />
        <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
    </customHeaders>
    </httpProtocol>
    <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" />
    </handlers>
</system.webServer>

删除 WebDavModule 是解决此问题的正确方法。
拯救了我的一天:
不应该需要自定义标头,因为它们与 CORS 相关,这样会导致安全漏洞。只有关于 WebDAVModule 的部分是相关的。
每次我看到这个 - runAllManagedModulesForAllRequests="true" - 作为一个解决方案britishdeveloper.co.uk/2010/06/…
注意:上述代码中的自定义标头部分允许任何站点从浏览器调用您的 API - 这是一个很大的安全风险。阅读 CORS,这实际上是这些标头所启用的。
H
Hager Aly

删除 WebDAV 非常适合我的情况:

<modules>
  <remove name="WebDAVModule"/>
</modules>
<handlers>
  <remove name="WebDAV" />
  <remove name="ExtensionlessUrlHandler-Integrated-4.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>

最好通过 web.config 解决问题,而不是通过 iis 或 machine.config 来解决问题,如果应用程序托管在另一台机器上,则不会发生


这对我有用,其他人由于某种原因没有(在 IIS 8.5 上)谢谢
删除 WebDAVModule 对我有用,无需删除处理程序 WebDAV (IIS 8.0)。
仅删除 webdav 适用于框架 4.6.2 iis8.5
C
Chris Marisic

更新您的 web.config

  <system.webServer>
    <modules>
      <remove name="WebDAVModule"/>
    </modules>
    <handlers>
      <remove name="WebDAV" />
      <remove name="ExtensionlessUrl-Integrated-4.0" />
      <add name="ExtensionlessUrl-Integrated-4.0"
           path="*."
           verb="GET,HEAD,POST,DEBUG,DELETE,PUT"
           type="System.Web.Handlers.TransferRequestHandler"
           preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
  </system.webServer>

http://odetocode.com/blogs/scott/archive/2012/08/07/configuration-tips-for-asp-net-mvc-4-on-a-windows.aspx

无需修改主机配置。


我已经写了另一行,但它不起作用。添加行 后,它现在正在工作。非常感谢和我这边的 1 票。
这可行,但由于配置锁定阻止在 web.config 中使用 可能会失败。在这种情况下,您必须在 applicationHost.config 中禁用配置锁定。如果由于某种原因您无法控制 applicationHost.config,则无法使用此方法。
使用 IIS10,虽然我只是使用“*”作为动词
使用 IIS 10 和 Web API 2。工作,我应该补充,在我在网上找到的另外十几个“解决方案”之后没有。谢谢!
对某些人来说可能很明显,但对我来说不是:确保您使用的是 integrated 管道而不是 classic,否则这将无济于事。
G
Ganesh

在 Asp.Net Web API - webconfig 中。这适用于所有浏览器。

在 System.web 标签内添加以下代码

<webServices>
  <protocols>
    <add name="HttpGet"/>
    <add name="HttpPost"/>
  </protocols>
</webServices>

用以下代码替换您的 system.webserver 标记

<httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE" />
    <add name="Access-Control-Allow-Headers" value="Content-Type" />
  </customHeaders>
</httpProtocol>
<modules runAllManagedModulesForAllRequests="false">
  <remove name="WebDAVModule" />
</modules>

<validation validateIntegratedModeConfiguration="false" />
<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" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

</handlers>


我在 IIS 7.5 中遇到了这个问题,而且这个修复工作得很好。我没有删除我所有的 system.webserver 内容,而是将上面的相关设置合并到我自己的设置中。
注意:上述代码中的自定义标头部分允许任何站点从浏览器调用您的 API - 这是一个很大的安全风险。阅读 CORS,这实际上是这些标头启用的功能。
在 iis 7.5 上也有这个问题,这很有效。请务必阅读上面关于向所有人开放 cors 所涉及的风险的 Toolkit 消息。也赞成他的评论,因为这样的花絮非常有价值。
在这种情况下,我认为您根本不需要自定义标题。 system.webserver 部分的其余部分就足够了 - 只需确保您拥有用于无扩展名 url 处理程序的 right name
@niico您应该只允许受信任的站点访问-控制-允许-来源,即用您的网站URL替换“*”。此属性是所有受信任站点的白名单,除非您想信任整个网络(这通常是个坏主意)。
S
Sico

这与其他一些答案一起在 iis8 上对我有用。我的错误是 404.6

<system.webServer>
  <security>
  <requestFiltering>
    <verbs applyToWebDAV="false">
       <add verb="DELETE" allowed="true" />
    </verbs>
  </requestFiltering>
  </security>
</system.webServer>

当您运行 AppCmd 时,这就是放入您的 web.Config 中的内容(applyToWebDAV 位除外)。
H
Hari

对于可能遇到此问题的其他任何人来说,只是一个快速更新。到今天为止,更改 %userprofile%\documents\iisexpress\config\applicationhost.config 不再起作用(直到现在都可以正常工作,不确定这是否是由于 Windows 更新所致)。经过数小时的挫折后,我更改了 web.config 以将这些处理程序添加到 system.webserver 以使其工作:

<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" />
    </handlers>

z
zokaee hamid

启用 CORS(漂亮而整洁)

1.添加CORS nuget包

Install-Package microsoft.aspnet.webapi.cors

2.在 WebApiConfig.cs 文件中注册方法添加如下代码:

config.EnableCors();

例如:使用 System.Web.Http;

namespace test
{
public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // Web API configuration and services


        config.EnableCors(); //add this**************************


        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );           
    }
}
}

3.将波纹管代码添加到控制器的名称空间中,包括get,post,delete,put或任何http方法

[EnableCors(origins: "The address from which the request comes", headers: "*", methods: "*")]

前任:

using System.Web.Http.Cors;//add this******************************
namespace Test.Controllers
{
[EnableCors(origins: "http://localhost:53681/HTML/Restaurant.html", headers: "*", methods: "*")]
public class RestaurantController : ApiController
{
    protected TestBusinessLayer DevTestBLL = new TestBusinessLayer();

    public List<Restaurant> GET()
    {
        return DevTestBLL.GetRestaurant();
    }

    public List<Restaurant> DELETE(int id)
    {
        return DevTestBLL.DeleteRestaurant(id);
    }       
}
}

参考:http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api


F
Frank Forte

对于 PHP,它很简单:

打开 IIS 转到 Handler Mappings 单击 php5.6.x 或 php7.0.x 上的编辑 单击动词选项卡下的“请求限制”,选择“以下动词之一”并添加“GET,HEAD,POST,PUT,PATCH ,删除,选项”

我想这也适用于其他处理程序。


p
pedrofernandes

在没有任何工作之后,我能够通过以下步骤解决这个问题:

• 安装IIS 时未选择“WEB DAV PUBLISHING”IIS 设置。 • INETMGR - 默认网站 - 请求过滤 - HTTP 动词 - PUT 为 True


D
DHFW

在无休止的搜索和尝试已经提供的答案(添加 PUT、DELETE 动词并删除 WEBdav)之后,它只是没有用。

我去了 IIS 日志记录设置:> 查看日志文件。在我的情况下,W3SVC4 是最新日期的文件夹,打开文件夹,查找最新的日志文件并看到以下条目:GET /Rejected-By-UrlScan ~/MYDOMAIN/API/ApiName/UpdateMETHOD

Update 方法用动词 GET 列出,很奇怪吧?所以我搜索了 Rejected-By-UrlScan 并找到了这个链接:UrlScan Broke My Blog

我去了这里:%windir%\system32\inetsrv\urlscan\UrlScan.ini

基本上,UrlScan 阻止了 PUT 和 DELETE 动词。我打开了这个 INI 文件,将 PUT 和 DELETE 添加到 AllowVerbs 并将它们从 DenyVerbs 列表中删除。我保存了 INI 文件,它工作了!所以对我来说,这些步骤在 ExtensionlessUrlHandler 提示旁边是必要的。

Windows 网络服务器 2008 R2(64 位),IIS 7.5。我将它与 DotNetNuke (DNN) WebAPI 结合使用。 ASP.Net 4.0 我的更新方法:

[HttpPut]
[DnnAuthorize(StaticRoles = "MyRoleNames")]
public HttpResponseMessage UpdateMETHOD(DTO.MyObject myData)

s
sr9yar

我和你遇到了同样的问题,然后解决了,这里有解决方案,我希望它可能对你有帮助 首先

在 IIS modules 配置中,循环 WebDAVModule,如果您的网络服务器有,则将其删除

第二

在IIS的handler mappings配置中,你可以看到启用处理程序列表,选择the PHP item,编辑它,在编辑页面,点击请求限制按钮,然后在modal中选择the verbs tab,在指定动词为句柄标签,勾选all verbs radio,然后点击ok,你也可能会看到一个警告,它表明我们使用双引号来执行PHP-CGI,然后执行

如果完成了,然后重新启动IIS服务器,就可以了

https://i.stack.imgur.com/MIjNn.png


我只从 IIS 网站上删除了 WebDAVModule,这对我有用
A
Arun

除了上述所有解决方案之外,请检查您是否有“id”或 DELETE 方法中的任何自定义参数与路由配置匹配。

public void Delete(int id)
{
 //some code here
}

如果您遇到重复的 405 错误,最好将方法签名重置为默认值,然后尝试。

默认情况下,路由配置将在 URL 中查找 id。所以参数名称 id 在这里很重要,除非您更改 App_Start 文件夹下的路由配置。

不过,您可以更改 id 的数据类型。

例如下面的方法应该可以正常工作:

public void Delete(string id)
{
 //some code here
}

注意:还要确保通过 url 传递数据,而不是通过将负载作为正文内容携带的数据方法。

DELETE http://{url}/{action}/{id}

例子:

DELETE http://localhost/item/1

希望能帮助到你。


C
Chaoix

以下是使用 IIS 管理器 GUI 允许额外 HTTP 动词的方法。

在 IIS 管理器中,选择您希望允许 PUT 或 DELETE 的站点。单击“请求过滤”选项。单击“HTTP 动词”选项卡。单击边栏中的“允许动词...”链接。在出现的框中键入“DELETE”,单击“确定”。再次单击边栏中的“允许动词...”链接。在出现的框中键入“PUT”,单击“确定”。


不错的尝试 - 一次不同的东西 - 但仍然没有工作!
我已经尝试了我在 SO 和其他地方看到的所有其他建议。我终于尝试了这个,它工作得很好。在我的情况下,PUT 和 DELETE 动词已经在列表中,我必须先删除它们,然后使用 Allow Verb... 链接将它们添加回来,但是,当没有其他东西时它仍然有效。太感谢了!
R
RC Cola

我在 MVC 应用程序中使用 ashx 文件,但上述答案均不适合我。 IIS 10。

这是有效的。我没有在 IIS 或 web.config 中更改“ExtensionlessUrl-Integrated-4.0”,而是为“*.ashx”文件更改了“SimpleHandlerFactory-Integrated-4.0”:

<add name="SimpleHandlerFactory-Integrated-4.0" path="*.ashx" 
verb="GET,HEAD,POST,DEBUG,PUT,DELETE" 
type="System.Web.UI.SimpleHandlerFactory" 
resourceType="Unspecified" requireAccess="Script" 
preCondition="integratedMode,runtimeVersionv4.0" />

L
Leniel Maccaferri

我不确定您是否编辑了正确的配置文件。尝试以下步骤

open %userprofile%\ducuments\iisexpress\config\applicationhost.config 默认情况下,下面给出的条目在 applicationhost.config 文件中注释。取消注释这些条目。

<add name="WebDAV" path="*"
 verb="PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK"
 modules="WebDAVModule" resourceType="Unspecified" requireAccess="None"
 />

搞乱applicationhost.config?不
除了应用程序配置文件之外,不应该乱用其他东西。首先-您将对整个服务器执行此操作而忘记了,然后很多人会想知道它如何在这台机器上工作而在其他机器上却不起作用。此外,如果不允许您访问托管应用程序的服务器上的 IIS 配置文件,则必须在 web.config 中解决。想象一下你的开发服务器有上述更新,你的 web.config 会准确吗?这是一个很好的方式,可以让某人花时间调查生产部署失败的原因
C
Community

另一个原因可能如下:
我根据 this answer 更改了我的 Url for Web Api 方法:

Url.Action("MyAction", "MyApiCtrl", new { httproute = "" })

但是这种方法会创建如下链接:

/api/MyApiCtrl?action=MyAction

这适用于 GET 和 POST 请求,但不适用于 PUT 或 DELETE。所以我只是将其替换为:

/api/MyApiCtrl

它解决了这个问题。


s
skillworks

在 IIS 8.5/Windows 2012R2 中,这里没有提到对我有用。我不知道删除 WebDAV 是什么意思,但这并没有为我解决问题。

对我有帮助的是以下步骤;

我去了IIS管理器。在左侧面板中选择了站点。在左侧工作区,选择 WebDAV,双击打开。在最右边的面板中,禁用它。

现在一切正常。


M
Mohammad Aghazadeh

我像这样将 requireAccess="None" 添加到 web.config

    <configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
                <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
                <remove name="WebDAV" />
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" requireAccess="None"/>
                <add name="WebDAV" path="*" verb="PROPFIND,PROPPATCH,MKCOL,PUT,DELETE,COPY,MOVE,LOCK,UNLOCK" modules="WebDAVModule" resourceType="Unspecified" requireAccess="None" />
                <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,DELTE" type="System.Web.Handlers.TransferRequestHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="0" />
      </handlers>
      <aspNetCore processPath=".\Informing.Gateway.Api.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="InProcess" />
    </system.webServer>
  </location>
</configuration>

它奏效了。而已


A
Ashi

试错不是解决此问题的正确方法。需要做的是:

识别阻止您的 PUT/DELETE 请求的来源

然后你可以删除它,禁用它甚至更好地配置它:

https://i.stack.imgur.com/bwecP.png


n
nsimeonov

对于那些可怜的灵魂,正在寻找一种方法来获取一个简单的 aspx 文件来处理 PUT、PATCH 和 DELETE 请求(是的,网络表单在上个世纪是如此,但它们仍在使用中)。它不会删除 WebDav 或之前提到的任何修复程序。这是PageHandlerFactory-Integrated-4.0

这是获得一个简单的 aspx 文件(例如 log-request.aspx)接受所有动词所需的全部魔法:

    <system.webServer>
        <handlers>
            <remove name="PageHandlerFactory-Integrated-4.0" />
            <add name="PageHandlerFactory-Integrated-4.0" path="*.aspx" verb="*" type="System.Web.UI.PageHandlerFactory" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />
        </handlers>
    </system.webServer>

T
Teoman shipahi

您可以将您的 Delete 方法转换为 POST 为;

 [HttpPost]
 public void Delete(YourDomainModel itemToDelete)
 {
 }