2010-02-18 123 views
1

我有一個使用.NET 3.5(VS2008)開發的Web服務方法,它需要幾個字符串(用戶名,密碼,主題,文件類型)和Base64中的二進制文檔。使用.NET的HTTP POST複雜請求

我啓用了SOAP和HTTP POST。儘管SOAP完美工作,但不能發送HTTP POST請求。服務器響應「服務器無法處理請求--- >根級數據無效,第1行,第1位」。

客戶正在使用此方法從其應用程序上傳文件。

有人告訴我,.NET不支持使用HTTP POST的複雜結構。任何方式來支持這一點?

回答

0

這聽起來像你想從桌面應用程序轉移到基於ASP的Web應用程序。

雖然這通常是一個好主意,但我認爲在嘗試通過http/form將文件發佈到您的Web服務中時,您會遇到一場艱苦的戰鬥。雖然從技術上講,我很難考慮實施。

使用表單作爲輸入變量和提交到表單的文件輸入的代理,您可能會有更好的運氣。一個網絡表單,並使用webform上的代碼隱藏來創建一個web服務類的實例(不需要使用代理服務器,您已經在線的一側)。

如果這沒有意義,請告訴我,如果它不能適合您的情況,請更新您的問題,以更清楚地說明您的預期結果。

如果您是通過Ajax來完成此操作,請使用[ScriptService]屬性裝飾您的服務類,並通過xmlhttp發佈JSON。您可以輕鬆發送複雜的參數。

參見http://www.codeproject.com/Articles/38999/Consuming-ASP-net-WebServices-WCF-Services-and-sta.aspx的說明。

如果您不是,請詳細說明發布內容以及您如何打包數據。

+0

我已更新我的問題:客戶正在訪問此方法以將他們的文檔上傳到我的服務。 – user240113 2010-02-19 09:20:50

+0

@ user240113,我已經更新了我的答案。我認爲你需要重新考慮你的計劃方法,並願意提供幫助。詳細說明你想要的結果。 – 2010-02-19 13:20:01

1

.NET不支持使用帶有httpBinding的POX(plain old xml)的複雜結構。下面是介紹如何設置它的一篇文章: http://fluxcapacity.net/2007/11/06/how-to-create-restpox-web-services-with-wcf/

注:所有的SOAP,XML和JSON DTO更新仍然工作在HTTP POST - SOAP只是包裝使用額外的標記,從而有效地只是增加了額外的開銷,你的有效載荷網站(即Ajax)客戶端的複雜性。

如果您希望您的同一個webservice能夠通過SOAP以及其他端點(例如, XML或JSON,你可能會對這個opensource webservices framework感興趣,它使所有這些端點無需任何額外的配置。