【问题标题】:WCF POST service with WebInvokeBodyStyle as wrapped not working as expected带有 WebInvokeBodyStyle 包装的 WCF POST 服务未按预期工作
【发布时间】:2012-06-01 16:15:29
【问题描述】:

我创建了一个具有以下签名的 WCF POST 服务。这在 IIS 中成功托管,我可以在服务的帮助页面中看到它:

[OperationContract]
    [WebInvoke(BodyStyle = WebMessageBodyStyle.Wrapped,
        RequestFormat = WebMessageFormat.Xml,
        ResponseFormat = WebMessageFormat.Xml,
        Method = "POST",
        UriTemplate = "TestMethod/{lang}/{str}/{selectedstring}/")]
    string TestMethod(string lang, string str, string selectedstring, string mylist, int testval);

在服务的帮助页面上,该方法正确显示为

TestMethod/{lang}/{str}/{selectedstring}/ || POST || Service at http://localhost:86/MyRestService.svc/TestMethod/{LANG}/{STR}/{SELECTEDSTRING}/ 

我正在尝试使用带有以下提到选项的提琴手调用此服务(基于一些在博客上的查找):

方法:发布

URL - 'http://servername:86/MyRestService.svc/TestMethod/en-us/str1/qad11/'

要求。标题: 用户代理:提琴手 主机:服务器名称:86 内容类型:application/xml

请求正文:

<TestMethod xmlns="http://tempuri.org/"><mylist>string val</mylist><testval>3</testval></TestMethod>

但是它总是给我一个 HTTP 结果代码 411(需要长度),当我尝试从我的 .net 测试存根调用服务时出现同样的错误。

【问题讨论】:

    标签: wcf rest post httpwebrequest http-post


    【解决方案1】:

    Fiddler 应该为您计算名为 Content-Length 的 HTTP 标头(至少它适用于 v2.3.9.3)检查 request 的原始选项卡中的类似内容:Content-Length: nnn 其中nnn 是请求正文的字符串长度。如果没有,那么您需要自己添加它。此外,您可以尝试使用 the POSTMan chrome plug 之类的浏览器插件来创建您的请求。

    【讨论】:

    • Fiddler 自己添加内容长度标头,但感谢您向我介绍 POSTMan chrome 插件。
    猜你喜欢
    • 1970-01-01
    • 2019-06-02
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多