1

我有一个这样的 WebInvoke 方法;

[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 模板的情况下从go()方法中的已发布消息中获取数据;

UriTemplate = "/go({name})"

因为我要发送大量数据,无法在uri模板中发送

4

2 回答 2

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"}
于 2009-12-19T14:03:13.457 回答
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());
于 2009-11-25T12:45:04.720 回答