• 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 这个问题,则在本地调试服务,在视图里面会有相应的报错,解决即可。

  • 相关阅读:
    react 创建组件 (三)PureComponet
    [翻译] YLGIFImage 高效读取GIF图片
    iOS设计模式:静态工厂相关
    使用mac版思维导图软件MindNode
    使用NSHashTable存储引用对象
    [翻译] PBJNetworkObserver 网络监控
    使用富文本OHAttributedLabel
    [翻译] TLMotionEffect 重力感应
    [翻译] TSActivityIndicatorView 自定义指示器
    获取音视频文件AVMetadata数据
  • 原文地址:https://www.cnblogs.com/smalldragon-hyl/p/8707601.html
Copyright © 2020-2023  润新知