2012-12-19 111 views
0

有人能告訴我如何向wcf rest服務發佈請求嗎?我的代碼如下試圖向wcf REST服務發佈請求時發生意外的HTML響應

TResponse Post<TRequest, TResponse>(string uri, TRequset input){ 
    HttpClient client = new HttpClient(); 
    HttpContent content = new ObjectContent<TRequest>(input, new XmlMediaTypeFormatter()); 
    HttpResponseMessage message = client.PostAsync(uri, content).Result; 
    return message.Content.ReadAsAsync<TResponse>().Result; 
} 

但它提供了以下異常

System.InvalidOperationException was unhandled by user code 
HResult=-2146233079 
Message=No MediaTypeFormatter is available to read an object of type 'String' from content with media type 'text/html'. 
Source=System.Net.Http.Formatting 

和消息變量的值是

message {StatusCode: 400, ReasonPhrase: 'Bad Request', Version: 1.1, Content: System.Net.Http.StreamContent, Headers: 
{ 
Connection: Close 
Cache-Control: private 
Date: Wed, 19 Dec 2012 14:36:32 GMT 
Server: ASP.NET 
Server: Development 
Server: Server/10.0.0.0 
X-AspNet-Version: 4.0.30319 
Content-Length: 1766 
Content-Type: text/html 
}} System.Net.Http.HttpResponseMessage 

我知道WCF其餘部分已被棄用。但是,有人可以告訴我如何實施? thx

+0

你需要找出爲什麼服務正在考慮你的請求是壞的。在服務器上啓用跟蹤,它應該有一些額外的信息。 – carlosfigueira

回答

0

無論何時您收到HTML和您期望的數據,HTML都可能表示來自服務器的錯誤消息。捕獲並顯示它,你會看到錯誤是什麼。

+0

thx您的答覆。您是正確的在服務器代碼內部的某處引發異常,但爲什麼它應該始終提出錯誤的請求?所以我認爲客戶端出了問題!當我修復服務器代碼時,一切都很正常。嘿,它花了我近一個星期:( – Sat

0

默認情況下WCF使用SOAP作爲消息協議,並且從您的示例中,您似乎正在使用XML正文執行HTTP。

如果您使用的是正常的WCF服務,這將是更容易使用典型的WCF客戶端(通過的ChannelFactory或類似的東西創建),並用它來調用不同的操作。

如果您不使用典型的WCF服務,那麼共享您的配置/代碼可以幫助您找到更好的答案。

相關問題