Web API 服务 HTTP 状态代码 405 在方法 POST 上



GET工作正常。但是在带有 POST 方法的 Chrome 中,我有:无法加载资源:服务器以状态 405(不允许的方法)响应。无法加载 http://localhost:49834/api/Rest/:预检响应具有无效的 HTTP 状态代码 405。在InterntExplorer中,我有:SCRIPT7002:XMLHttpRequest:网络错误0x80070005,访问被拒绝。

控制器:

[EnableCors("*", "*", "*")]
    public class RestController : ApiController
    {
// POST: api/Rest
        [HttpPost]
        public void Post([FromBody]Request Request)
        {
            if (ModelState.IsValid)
            {
                db.Requests.Add(Request);
                db.SaveChanges();
            }
        }
}

WebApiConfig.cs

config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
            var json = config.Formatters.JsonFormatter;
            json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects;
            config.Formatters.Remove(config.Formatters.XmlFormatter);

网络配置:

<httpProtocol>
     <customHeaders>
       <add name="Access-Control-Allow-Origin" value="*" />
      <add name="Access-Control-Allow-Headers" value="*" />
      <add name="Access-Control-Allow-Methods" value="GET,POST,PUT,DELETE,OPTIONS" />
     </customHeaders>
   </httpProtocol>
<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
        <remove name="WebDAVModule"/> <!-- add this -->
    </modules>  
    <handlers>      
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <remove name="WebDAV" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%Microsoft.NETFrameworkv4.0.30319aspnet_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.NETFramework64v4.0.30319aspnet_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>

阿贾克斯帖子:

var url = "http://localhost:49834/";
$.ajax({
                type: "POST",
                url: url + "api/Rest/",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                data: JSON.stringify(submitData),
                success: function (data) {
                },
                error: function (err) {
                    console.log(err);
                    alert(err.status + " - " + err.statusText);
                }
            })

我使用 IIS Express:%userprofile%\documents\IISExpress\config 文件夹中的 applicationHost.config 文件 => ExtensionlessUrl-Integrated-4.0 处理程序的配置如下 verb="GET,HEAD,POST,DEBUG,PUT,DELETE"

GET工作正常:

$.getJSON(url + "api/Rest").done(function (data) { 
                    var mass = new Array();                 
                    $(data).each(function (index, e) {
                        ReqArray.push(e);
                    })
                    vm.requests(ReqArray); 
                });

我的 ajax 有一些问题,像这样它工作得很好:

var url = "http://localhost:49834/";
    $.ajax({
                        type: "POST",
                        url: url + "api/Rest",
                        dataType: "json",
                        data: submitData,
                        success: function (data) {
                        },
                        error: function (err) {
                            console.log(err);
                            alert(err.status + " - " + err.statusText);
                        }
                    })

相关内容

最新更新