2009-11-25 79 views
1

我有這樣的WebInvoke方法;如何在服務器端從HTTPPOST請求中加載數據?

[OperationContract] 

    [WebInvoke(

     Method = "POST", 
     UriTemplate = "/go", 
     BodyStyle = WebMessageBodyStyle.Bare, 
     RequestFormat = WebMessageFormat.Xml, 
     ResponseFormat = WebMessageFormat.Xml 

    )]  
    string go(string name); 

我發佈了這樣的數據;

System.Net.WebClient client = new System.Net.WebClient(); 

     string reply = client.UploadString(
      "http://localhost/HelloService/Service.svc/go", 
      "POST", 
      aString); 

的問題是我怎麼可以從發佈消息的數據去()方法不使用這樣的URI模板;

UriTemplate = "/go({name})" 

,因爲我要發送大量的數據,我不能送了它在URI模板

回答

1

這裏是溶液;

[OperationContract] 
[WebInvoke(
BodyStyle = WebMessageBodyStyle.Wrapped, 
RequestFormat = WebMessageFormat.Json, 
ResponseFormat = WebMessageFormat.Json, 
Method = "POST", 
UriTemplate="/go" 
)] 
string MyWebServiceMethod(string name); 

和HTTP POST請求是;

POST /go Modify HTTPS/1.1 
Content-Type: application/json; charset=utf-8 
Host: WebserviceURL 
Content-Length: length 

{"name":"someName"} 
+0

爲了讓答案更有用,您可以請詳細說明解決方案嗎? – RyBolt 2010-11-15 18:26:00

0

你有機會獲得System.Web.HttpContext.Current

您可以嘗試System.Web.HttpContext.Current.Request.Form,或者,它看起來像您的請求格式使用XML,因此您可能想嘗試從請求流中加載XElement或XmlDocument。

(這裏可能有錯誤的方法,但它在請求對象的某處存在) // .NET 4.0只

XElement el = XElement.Load(HttpContext.Current.Request.GetRequestStream()); 
+0

我無法訪問System.Web.HttpContext.Current。我需要.Net4.0嗎? – EEE 2009-11-25 12:53:45

相關問題