.net - 如何在 REST 模式下使用 WCF 服务?

标签 .net rest wcf

部署 wcf 服务 (.net 4.0)。服务端配置如下:

<endpoint address="" 
          binding="webHttpBinding" 
          bindingNamespace="https://mydomain/myservice/services"     
          behaviorConfiguration="WebBehavior"
          contract="MyService" />

<endpointBehaviors>
  <behavior name="WebBehavior">
    <webHttp />
  </behavior>
</endpointBehaviors>

尝试在 Web 应用程序中使用服务,web.config好像:
<system.serviceModel>
    <client>      
        <endpoint name="MyServiceEndpointBasicHttp" 
                  address="http://myDomain/myService"
                  binding="webHttpBinding" behaviorConfiguration="webBehavior" 
                  contract="MyNamespace.IMyService" />
     </client>
     <behaviors>
         <endpointBehaviors>
             <behavior name="webBehavior">
                 <webHttp />       
             </behavior>     
          </endpointBehaviors>
     </behaviors>
</system.serviceModel>

调用服务时出现异常:

Operation 'Method1' of contract 'IMyService' specifies multiple request body parameters to be serialized without any wrapper elements. At most one body parameter can be serialized without wrapper elements. Either remove the extra body parameters or set the BodyStyle property on the WebGetAttribute/WebInvokeAttribute to Wrapped.



经过一些谷歌搜索,我们设置了 [WebGet(BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Xml)]在方法上,但没有成功......

一件有趣的事情:异常中总是有相同的方法名称,即使我正在调用其他方法......

服务在 REST 模式下工作正常,同时通过输入方法名称和必要的参数使用浏览器进行测试...

最佳答案

您似乎面临与此线程类似的问题:WCF Service Proxy throws exception when more than one parameter is used in [OperationContract] method

“您似乎已经使用 VS 中的“添加服务引用”对话框创建了代理代码。VS ASR 对话框不完全支持 WCF REST,因此,代理代码缺少 [WebInvoke] 属性。您可以尝试添加 [WebInvoke(BodyStyle = WebMessageBodyStyle. Wrapped)] 属性在客户端代理中的操作?”

关于.net - 如何在 REST 模式下使用 WCF 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4540042/

相关文章:

c# - 如何成功继承具有Designer功能的TypeConverter

.net - Web 开发期间自动刷新浏览器

rest - REST API 包装器是否应该在发出请求之前验证输入?

c# - 如何通过 WCF 处理大文件上传?

WCF,自签名加密证书

.NET:为什么 Encoding.GetEncodings() 中没有 base 64?

c# - 有谁知道用于处理数量/度量单位对的库?

java - tomcat服务器部署时出现404错误

java - 是否可以让 JAX-RS 服务处理同一 URI 上的 GET 并让 WebServlet 处理 POST?

jquery - wcf REST 服务和 JQuery Ajax 帖子 : Method not allowed