2017-09-26 140 views
0

這個問題正在讓我失望,無論我嘗試了什麼,我似乎都無法修復它。 我有一個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。請幫助。

回答

0

您需要在您的IIS上啓用所有動詞。 IIS - 處理程序映射 - ExtensionlessUrlHandler集成 - 4.0 - 請求限制... - 動詞 - 下列動詞或所有動詞

enter image description here

+0

它已經啓用,仍然無法正常工作。 –