【问题标题】:tests wcf service in the browser在浏览器中测试 wcf 服务
【发布时间】:2011-06-20 14:01:14
【问题描述】:

即使配置文件中有<ServiceMetadata httpGetEnabled="True"/>,我也无法在浏览器中调用基本的 wcf Web 方法。

对于源代码,非常基础:

对于接口:

[ServiceContract]
    public interface IService1
    {

        [OperationContract]
        [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
        string GetData();

        [OperationContract]
        CompositeType GetDataUsingDataContract(CompositeType composite);

        // TODO: ajoutez vos opérations de service ici
    }

对于实施:

 public string GetData()
        {
            return ("{'code':'yes'}");
        }

此方法在内置的visual studio wcf服务测试器中运行良好,返回{'code':'yes'}

在浏览器中,当我调用http://localhost:54421/Service1.svc/GetData 时,它会显示一个空白页面。我该如何解决这个问题?

【问题讨论】:

  • 我认为问题在于浏览器无法原生显示 JSON 结果 - 它们要么根本不显示任何内容,要么显示提示保存正在发回的文件
  • 我认为您正在使用 Rest Starter Kit,或者设置了 webHttp 端点?

标签: c# wcf web-services browser


【解决方案1】:

我通过为 REST 调用创建额外的端点行为来做到这一点,这样我就可以拥有不同的客户端。看看这个配置:

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

在您的服务定义中添加使用此行为的端点

<endpoint address="/easy" behaviorConfiguration="RESTFriendly" ...

现在您可以从浏览器和 wcf 客户端调用您的服务。从浏览器调用它:

http://localhost:54421/Service1.svc/easy/GetData

ServiceMetadata 用于不同的目的,这里是 link 到文档。基本上,这意味着您的服务将公开有关其自身的信息,以便外部开发人员可以创建代理客户端。

【讨论】:

    【解决方案2】:

    大多数浏览器不会在浏览器中显示 json 结果。通常,您会看到一个空白页面(尝试查看源代码),或者您会收到下载提示。

    如果您使用的是 Firefox,view JSONPoster add-on 有一些附加组件可用于测试 Web 服务。

    如果你使用的是谷歌浏览器,你可以试试Pretty JSON

    【讨论】:

      猜你喜欢
      • 2015-11-16
      • 1970-01-01
      • 1970-01-01
      • 2016-07-13
      • 1970-01-01
      • 2013-03-26
      • 2011-03-26
      • 1970-01-01
      相关资源
      最近更新 更多