PostMan调用WCF Rest服务

发表于:2018-4-04 10:53

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:何瑶龙    来源:博客园

  问题描述:
  现在有已有的WCF服务,但是ajax是不能请求到这个服务的;
  需要把WCF转成WCF REST 的风格。
  以下是从WCF转 WCF REST的步骤
  1.首先在接口定义的地方加上请求
  WebInvoke http的请求动作
  如下:
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "Login", ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
bool Login(string userNo, string pwd);
  UriTemplate中的“login”  是接口的名称 其他不需要变;
  下面来解释下 4种WebMessageBodyStyle的含义,按需配置
  Bare:请求和响应都是裸露的
  WrappedRequest:请求是包裹的(,响应是裸露的)
  WrappedResponse:响应是包裹的(,请求是裸露的)
  Wrapped:请求和响应都是包裹的
  例子:GetOneParameter
  BodyStyle = WebMessageBodyStyle.Bare / WrappedRequest
  返回值:"You get: 1"
  BodyStyle = WebMessageBodyStyle.WrappedResponse / Wrapped
  返回值:{"GetOneParameterResult":"You get: 1"}
  WrappedRequest和Wrapped的请求是包裹的,即要指明key=value
  2.webConfig 的配置
<service >
<endpoint address="" behaviorConfiguration="webBehavior" binding="webHttpBinding" name="test" contract="test.model" >
</endpoint>
</service>
<endpointBehaviors>
<behavior name="webBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
  其中behaviorConfiguration="webBehavior" binding="webHttpBinding"  这个是必须的
  注意事项
  1)只要有OperationContract这个属性的,都需要添加 WebInvoke 请求动作。
  2)如果出现  由于 AddressFilter 在 EndpointDispatcher 不匹配,To 为“http://localhost:8006/rest/DoWork”的消息无法在接收方处理。请检查发送方和接收方的 EndpointAddresses 是否一致。
  就是第二点的配置有问题,改成以上的配置即可。
  3)如果服务报500 的 System.ServiceModel.ServiceActivtyException 这个问题,则在本地调试服务,在视图里面会有相应的报错,解决即可。

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号