2017-07-17 82 views
0

我在兩個服務器節點的服務時,我使用它有時它工作得很好,有時會錯誤MVC的Web API:爲預檢響應具有無效的HTTP狀態碼404級

XMLHttpRequest cannot load.. Response for preflight has invalid HTTP status code 404 

我也跟着上計算器的答案,寫了這個代碼但它並沒有解決問題

protected void Application_BeginRequest() 
    { 
     if (Request.HttpMethod == "OPTIONS") 
     { 
      Response.Flush(); 
     } 
    } 

的Web.config

<system.webServer> 
    <httpProtocol> 
     <customHeaders> 
     <remove name="X-Powered-By" /> 
     <add name="Access-Control-Allow-Origin" value="*" /> 
     <add name="Access-Control-Allow-Headers" value="Accept, Content-Type, Origin" /> 
     <add name="Access-Control-Allow-Methods" value="GET, PUT, POST, DELETE, OPTIONS" /> 
     </customHeaders> 
    </httpProtocol> 
    <security> 
     <requestFiltering> 
     <requestLimits maxAllowedContentLength="1073741824" /> 
     </requestFiltering> 
    </security> 
    <modules> 
     <remove name="FormsAuthentication" /> 
    </modules> 
    <handlers> 
     <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> 
     <remove name="OPTIONSVerbHandler" /> 
     <remove name="TRACEVerbHandler" /> 
     <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 
    </handlers> 
    </system.webServer> 
+0

的[AngularJS POST失敗可能重複:爲預檢響應具有無效的HTTP狀態代碼404](https://stackoverflow.com/questions/33660712/angularjs-post-fails-response-for-preflight-has-invalid-http-status-code-404) – niksofteng

回答

0

您可能需要使用此裝飾[WebInvoke(Method = "OPTIONS", UriTemplate = "*")]一個經營合同,例如:

[OperationContract] 
    [WebInvoke(Method = "OPTIONS", UriTemplate = "*")] 
    void GetOptions(); 

和操作實現將是:

public void GetOptions() 
    { 
     WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Allow-Origin", "*"); 
     WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Allow-Methods", "POST, GET, OPTIONS"); 
     WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Allow-Headers", "Content-Type"); 
    } 
+0

謝謝你的幫助和努力。 你能告訴我把你的代碼放在我的服務項目中嗎? – Alex

+0

操作合同應放置在與客戶端的調用遇到錯誤的服務合同相同的服務合同中,操作實現應放置在相應的服務類中。 –

相關問題