在浏览器中测试wcf服务

时间:2011-02-03 10:41:39

标签: c# wcf web-services browser

即使在配置文件中使用<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时,它会显示一个空白页面。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

我通过为REST调用创建其他端点行为来实现这一点,因此我可以拥有不同的客户端。看看这个配置:

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

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

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

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

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

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

答案 1 :(得分:1)

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

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

如果您使用的是Google Chrome浏览器,可以尝试Pretty JSON