即使在配置文件中使用<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
时,它会显示一个空白页面。我该如何解决这个问题?
答案 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 JSON和Poster add-on的附加组件用于测试Web服务。
如果您使用的是Google Chrome浏览器,可以尝试Pretty JSON