405方法不允许.Net Web Api

问题描述:

这个问题正在让我失望,无论我尝试了什么,我似乎都无法修复它。 我有一个Angular 4应用程序发送Http请求到.net WEB Api。在IIS Express上(通过Visual Studio 2013),一切正常,包括Get,Put和Post方法。只要我在IIS服务器或本地IIS上配置Web Api,Get方法仍在工作,但Put和Post停止工作。405方法不允许.Net Web Api

我的要求:

 headers.append('Content-Type', 'application/json'); 
    return this.http.put('http://iisserver/dbServerMonitor/api/server/updateServer', this.serversService.getServer(index), {headers: headers}); 

WebConfig.Cs

public static void Register(HttpConfiguration config) 
    { 
     //Enable cors 
     var cors = new EnableCorsAttribute("*", "accept, accesstoken, autorization, cache-control, pragma, content-type, origin", "GET, PUT, POST, DELETE, OPTIONS"); 
     // Web API configuration and services 
     //var cors = new EnableCorsAttribute("*", "*", "*"); 
     //config.MessageHandlers.Add(new CorsHandler()); 

     config.EnableCors(cors); 
     // Web API routes 
     config.MapHttpAttributeRoutes(); 
     config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html")); 
     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
    } 

控制器:

[HttpPut] 
    [Route("updateServer")] 
    public HttpResponseMessage updateServer([FromBody] Server server) 
    { 
     ....code 

而且我也有在控制器:

[HttpOptions] 
    public HttpResponseMessage Options() 
    { 
     return new HttpResponseMessage { StatusCode = HttpStatusCode.OK }; 
    } 

我尝试了一切,从更改标题,完全从请求代码中删除它们,处理Web配置xml文件上的CORS,但最终它只能在cs文件上工作。我对如何解决这个问题完全无能为力。

编辑:摆脱身份验证后,我现在能够成功地调用发布和放在我的本地IIS上。但是,在另一个IIS服务器(相同域)上,我在Put和Post调用中获得了404。请帮助。

您需要在您的IIS上启用所有动词。 IIS - 处理程序映射 - ExtensionlessUrlHandler集成 - 4.0 - 请求限制... - 动词 - 下列动词或所有动词

enter image description here

+0

它已经启用,仍然无法正常工作。 –