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

  • 相关阅读:
    python爬虫入门 爬图片的,用百度搜图,直接下,类型受限不过可以直接下,简单不少,下图片可以用
    TIME_WAIT状态原理(转)
    Unix网络编程的实现具体流程
    logistic损失函数的解释
    最大似然估计的复习(转)
    洛谷 P1022 计算器的改良
    洛谷P1012 拼数
    洛谷 P1073 最优贸易
    洛谷 P1098 字符串的展开
    洛谷 P3802 小魔女帕琪
  • 原文地址:https://www.cnblogs.com/smalldragon-hyl/p/8707601.html
Copyright © 2020-2023  润新知