PostMan 调用WCF Rest服务

问题描述:

现在有已有的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 是否一致。

就是第二点的配置有问题,改成以上的配置即可。

2)如果服务报500 的 System.ServiceModel.ServiceActivtyException 这个问题,则在本地调试服务,在视图里面会有相应的报错,解决即可。

 

posted on 2018-04-03 11:46 何瑶龙 阅读() 评论() 编辑 收藏

版权声明:本文为smalldragon-hyl原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/smalldragon-hyl/p/8707601.html