IIS不支持WebAPI Put和Delete,解决方法

环境windows10+IIS 10

把 托管模式 设置为 集成

web.config设置如下

<?xml version="1.0" encoding="UTF-8"?>
<!--
  有关如何配置 ASP.NET 应用程序的详细信息,请访问
  https://go.microsoft.com/fwlink/?LinkId=301879
  -->
<configuration>
  <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>
  <connectionStrings>
    <add name="db" connectionString="server=.;userid=sa;password=;database=Test;" />
  </connectionStrings>
  <!--
    有关 web.config 更改的说明,请参见 http://go.microsoft.com/fwlink/?LinkId=235367。

    可在 <httpRuntime> 标记上设置以下特性。
      <system.Web>
        <httpRuntime targetFramework="4.5" />
      </system.Web>
  -->
  <system.web>
    <compilation debug="true" targetFramework="4.5.2" />
    <httpRuntime />
    <pages controlRenderingCompatibilityVersion="4.0" />
  </system.web>
  <system.webServer>
    <handlers>
      <remove name="ISAPI-dll" />
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <remove name="OPTIONSVerbHandler" />
      <remove name="TRACEVerbHandler" />
      <remove name="WebDAV" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
      <add name="ISAPI-dll" path="*.dll" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="File" requireAccess="Execute" allowPathInfo="true" preCondition="bitness32" />
    </handlers>
    <httpProtocol>
      <customHeaders>
        <!-- 先移除后添加,确保起作用 -->
        <remove name="Access-Control-Allow-Origin" />
        <remove name="Access-Control-Allow-Headers" />
        <remove name="Access-Control-Allow-Methods" />
        <remove name="Access-Control-Max-Age" />
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="*" />
        <add name="Access-Control-Max-Age" value="1728000" />
        <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE" />
      </customHeaders>
    </httpProtocol>
    <modules runAllManagedModulesForAllRequests="true">
      <remove name="TelemetryCorrelationHttpModule" />
      <remove name="WebDAVModule" />
      <add name="TelemetryCorrelationHttpModule" type="Microsoft.AspNet.TelemetryCorrelation.TelemetryCorrelationHttpModule, Microsoft.AspNet.TelemetryCorrelation" preCondition="integratedMode,managedHandler" />
    </modules>
        <directoryBrowse enabled="false" />
        <defaultDocument>
            <files>
                <clear />
                <add value="index.htm" />
                <add value="index.html" />
                <add value="Default.htm" />
                <add value="Default.asp" />
                <add value="iisstart.htm" />
            </files>
        </defaultDocument>
  </system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" />
        <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.2.1" newVersion="4.0.2.1" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
        <bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-5.2.4.0" newVersion="5.2.4.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
    </compilers>
  </system.codedom>
</configuration>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;

namespace WebAPI.Controllers
{
    public class ValuesController : ApiController
    {
        // GET api/values
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }

        // GET api/values/5
        [HttpGet]
        public string Get(int id)
        {
            return "Get,  "+id.ToString();
        }

        // POST api/values
        [HttpPost]
        public string Post([FromBody]string value)
        {
            return "Post,  " + "";
        }

        // PUT api/values/5
        [HttpPut]
        public string Put(int id, [FromBody]person p)
        {
            return "Put,  " + p.id.ToString()+","+p.name.ToString();
        }

        // DELETE api/values/5
        [HttpDelete]
        public string Delete(int id)
        {
            return "Delete,  " + id.ToString();
        }
    }

    public class person
    {
        public string id { get; set; }
        public string name { get; set; }
    }
}

前端页面代码:

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>TestAPI</title>
    <style>

        li a { cursor:pointer; line-height:200%;}
    </style>
    <script src="~/Scripts/jquery-3.3.1.min.js"></script>
    <script type="text/javascript">
        function CallGet() {
            //alert("Get");
            $.ajax({
                type: "Get",
                url: "/api/Values",
                data: { id: "666" },
                success: function (data) {
                    $("#con").append("<br />Get到的数据为:"+data);

                }
            })

        }
        function CallPost() {
            $.ajax({
                type: "Post",
                url: "/api/Values",
                data: { "id": "B3D3D6C7-4CC8-410A-A6D6-58CBAC26D2B8", "name": "TestName" },
                success: function (data) {

                    $("#con").append("<br />Post到的数据为:" + data);
                }
            });

        }
        function CallPut() {
            $.ajax({
                type: "Put",
                url: "/api/Values?id=7",
                data: { id:1111,name: "TestName" },
                success: function (data) {
                    $("#con").append("<br />Put到的数据为:" + data);
                }
            });
        }
        function CallDelete() {
            $.ajax({
                type: "Delete",
                url: "/api/Values?id=888",
                data: { id: 888 },
                success: function (data) {
                    $("#con").append("<br />Delete到的数据为:" + data);
                }
            });
        }

        function CallReq() {
            $.ajax({
                type: "get",
                url: "/home/TestReques",
                success: function (data) {
                    $("#con").append("<br />后台调用的Put结果是:"+data);
                }
            });
        }
    </script>
</head>
<body>
    <div>
        <ul>
            <li><a onclick="CallGet()">Get请求</a></li>
            <li><a onclick="CallPost()">Post请求</a></li>
            <li><a onclick="CallPut()">Put请求</a></li>
            <li><a onclick="CallDelete()">Delete请求</a></li>
            <li><a onclick="CallReq()">CallReq</a></li>
        </ul>
    </div>
    <div id="con">

    </div>
</body>
</html>

原文地址:https://www.cnblogs.com/wehas/p/10595002.html

时间: 2024-10-15 14:41:39

IIS不支持WebAPI Put和Delete,解决方法的相关文章

node-webkit 不支持html5_video播放mp4的解决方法

原因: mp4似乎是有专利的影音格式.node-webkit不对其进行支持…… 似乎是.. 解决方法 : 在本地安装chrome浏览器,进行安装目录(例:c:\Google\Chrome\Application\37.0.2062.103),找到ffmpegsumo.dll文件. 复制(ffmpegsumo.dll)并替换node-webkit目录下的ffmpegsumo.dll. 注:由于chromium 版本众多,所以,下载的chrome浏览器的chromium版本要与node-webkit

ASP.net MVC3 报错"未找到视图“Index”或其母版视图,或没有视图引擎支持搜索的位置 "的解决方法

注意添加MVC3视图不能直接在View文件下新建视图,而是在控制器的Index 右击添加视图,就会在View下面产生一个Product文件夹(包含Index.cshtml) 就可以解决这个问题. 具体如图: 参考:[ASP.NET MVC 小牛之路]Razor语法 ASP.net MVC3 报错"未找到视图"Index"或其母版视图,或没有视图引擎支持搜索的位置 "的解决方法

IIS启动网站出错的几个解决方法

在ASP.NET项目中使用了IIS服务器,由于系统是XP的,而在装系统的时候IIS没有一起装,所以从网上下载的IIS5.0版本(其它版本XP是用不了的).但是在使用的过程中老是出问题,每次调试好后,过几天再打开就运行不了.然后又去调试.安装,因此把我遇到的几次问题和解决方法总结如下.1.本地网址访问不了,启动本地网站报错:服务没有及时响应启动或控制请求.或者启动World Wide Web Publishing提示"错误127:找不到指定的程序.   这种情况遇到的最多,可能也和IIS的版本有关

IE8及低版本浏览器不支持CSS3 media queries的解决方法

问题:IE8及其以下低版本IE浏览器在缩小窗口时,UI没有按照相应的要求显示窗口缩小时对应的布局:其他浏览器正常. 定位过程: 其实开始拿到问题时是无从下手,不知所以然,根本就没听说还有media这个CSS属性,就更不知道它的功能了.但是对于解决UI问题,有自己的一套思路,就是首先要思考为什么会错误以及为什么没有错误两个方面,然后针对这两个方面的疑问把html或js或css文件简化再简化,修改再修改,查看UI变化,从而缩小问题范围,最后找出问题根源. 如此我就想为什么其他浏览器界面布局没有问题呢

IIS浏览提示无法显示网页的解决方法

1.错误号401.1 症状:HTTP 错误 401.1 - 未经授权:访问由于凭据无效被拒绝. 分析: 由于用户匿名访问使用的账号(默认是IUSR_机器名)被禁用,或者没有权限访问计算机,将造成用户无法访问. 解决方案: (1)查看IIS管理器中站点安全设置的匿名帐户是否被禁用,如果是,请尝试用以下办法启用: 控制面板->管理工具->计算机管理->本地用户和组,将IUSR_机器名账号启用.如果还没有解决,请继续下一步. (2)查看本地安全策略中,IIS管理器中站点的默认匿名访问帐号或者其

关于2.4版本以后apache/httpd开始不支持下划线header的解决方法

官方文档给出的解释:http://httpd.apache.org/docs/current/env.html#fixheader (以下摘自官方文档,英文不想看的可以直接看忽略..直接从下划线后内容开始) ------------------------------ Passing broken headers to CGI scripts Starting with version 2.4, Apache is more strict about how HTTP headers are c

Error:不支持发行版本5的解决方法

今天使用 mac Idea maven 测试 Spring annotation 配置,在编写好测试方法后,执行显示 Error:不支持发行版本5 解决方法如下: 再次执行 ok 原文地址:https://www.cnblogs.com/KennyWang0314/p/12268953.html

1、IIS常见的的问难及解决方法

1.问题: CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\f2a4068a\9cbe0b27\App_Code.55n5zko8.dll”--“拒绝访问. ” 解决方法: 通常的解决方法:原因是由于系统目录下的Temp目录无相应的权限所致,具体操作如下:C:\Windows\temp-->属性-->安全-->编辑-->添加NETWORK SE

centos6上,git拉代码时候,报错提示不支持低版本ssl的解决方法

[[email protected]_mwdb-20-25 /root ]# git clone https://github.com/pyenv/pyenv.git  报错信息如下2行: error:  while accessing https://github.com/pyenv/pyenv.git/info/refs fatal: HTTP request failed 解决方法: 需要升级下包, yum update nss curl libcurl 即可,然后再近些git clone