當我在Visual Studio 2013中創建一個名爲「WcfService1」的全新WCF服務應用程序並立即運行它時,WCF Test Client完成的請求工作正常。不出所料。使用Postmen或SoapUI測試WCFService1會給出400錯誤請求
當我嘗試在Postman或SoapUI等REST/SOAP客戶端中測試相同的初始應用程序時,出現400錯誤請求錯誤。像Postman這樣的REST客戶端應該改變什麼來向最初的VS應用程序發出請求?
除其他我測試過這些可能性:如交付由最初的WCF服務應用程序
[ServiceContract] public interface IService1 { [OperationContract] string GetData(int value); }
爲了提高可讀性,我不會的源代碼從整個項目粘貼
1的源代碼。如果你願意,你可以通過在VS中創建一個新的WCF服務應用程序項目來生成它。
下面你看到的我是如何配置的郵遞員,它給400錯誤的請求:
2.郵差原始XML請求從WCF測試客戶端
複製這個變體沒有解決這個錯誤。源代碼未改變,與上述相同。
3.源代碼WebInvokeAttribute擴展上的GetData操作
[OperationContract] [WebInvoke(Method = "POST", UriTemplate = "/GetData")] string GetData(int value);
這除了沒有解決的錯誤。郵差中的所有設置都與上面相同;當然在URL中使用/ GetData。
4.的GetData操作OperationContractAttribute擴展
[OperationContract(Action = "http://www.jorritsteetskamp.nl/wcfservice1")] string GetData(int value);
我試圖郵差與添加的SOAPAction頭,但同樣地導致錯誤400:
在SO存在幾個有關WCF服務和400錯誤請求錯誤的問題,但它們都看起來是特定於應用程序的,並且沒有針對此案例的解決方案。由於Visual Studio生成的初始應用程序出現此問題,並且在WCF Test Client中工作,所以我發現發佈此問題的原因。
我的問題是:像Postman這樣的REST客戶端應該如何改變以向最初的VS應用程序工作提出請求?
任何幫助將不勝感激。
感謝您的解釋,這正是我所需要的。以供將來參考:我的解決方案是將情況2和4結合起來。來自WCF Test Client的原始XML的Header部分應該由REST客戶端中真實的SOAPAction頭替換(案例4)。而且確實沒有GetData的URL。在這個解決方案中,似乎不需要配置WebHttp端點,因爲.NET的默認配置很好。 –