2011-06-29 24 views
1

我有一個ASP.NET WCF .svc接口,它接受一個POST的表單。我根本無法控制POSTing客戶端(這恰好是IBM Lotus Forms Viewer應用程序),但其行爲是它將自己POST到我選擇的URL並且響應在Internet Explorer中作爲本地服務臨時文件彈出具有由MIME類型控制的擴展。如何完全控制ASP.NET WCF返回輸出?

我是WCF REST服務的新手,但是我很難控制響應,這種響應不斷被XML標記包裹。 有沒有辦法關閉所有輸出包裝,並控制從WCF操作返回的內容?

我可以將表單指向WCF服務(比如.aspx文件)以外的其他東西,但我認爲至少在我做出該決定之前瞭解如何控制格式是有用的。

[編輯]爲了澄清,我目前的服務界面原型是這樣的:

[OperationContract] 
[WebInvoke(Method = "POST", UriTemplate = "/AF1067/SubmitForm", 
    BodyStyle = WebMessageBodyStyle.Bare)] 
public string AF1067_SubmitForm(System.IO.Stream fileContents) { ... } 

[編輯]用戶@Kon發現this link這有了答案 - 如果我返回一個System.IO.Stream,該響應將停止被封裝。

+0

我有一種感覺,它包裝在XML標籤中,因爲請求源於IBM應用程序內指定的內容類型不正確。但是如果沒有看到代碼就很難說。 – Kon

+0

@Kon:不,請求來自Viewer作爲一個裸POST,我可以讀得很好(詳見編輯)。其我的服務響應我需要修復。 –

回答

0

繼續我們的評論,我仍然認爲這可能與請求者的設置有關。也許沒有指定內容類型設置的純粹的POST默認是錯誤的?嘗試明確地將其設置爲「application/json」或「application/json; charset=utf-8」只是拋出想法。

另一件要確認的事情是您的服務方法的ResponseFormat也設置爲JSON。

順便說一句,不錯的方法名稱。 ;)

+0

但我不想交換JSON,我想返回,比如說「hello world」。作爲整個迴應。您的評論是否仍然適用? –

+0

我相信你唯一的答案格式選項是XML或JSON。這裏有一個很好的閱讀如何同時支持兩個:http://stackoverflow.com/questions/5752975/wcf-service-method-to-return-json-or-soap – Kon

+1

雖然我只是發現這個:http ://stackoverflow.com/questions/992533/wcf-responseformat-for-webget它可能會導致你在正確的方向。 – Kon