像标准ASMX Web服务一样查询WCF

时间:2010-10-14 16:16:16

标签: wcf web-services asmx

我刚刚构建了一个Silverlight应用程序,它通过WCF与服务器通信。我们来回沟通的数据是无缝的,说实话,很容易实现(w / SL)。不幸的是,我需要能够从WCF请求与ASMX Web服务类似的相同信息。现在,我正在本地运行该服务(http://localhost/aps.svc),但我无法通过Web浏览器“调用”任何方法(类似于asmx Web服务)。例如:http://FooBar/Service/servic.aspx?op=GetName将返回一个名称。我需要这种能力,因为我们的第三方软件仅限于使用web asmx服务,我想使用已经构建的WCF。

我对WCF和Web服务一般都很陌生 - 所以任何帮助都会非常感谢!

- 汤姆

3 个答案:

答案 0 :(得分:2)

为了直接在浏览器中使用您的WCF服务,您需要切换到REST样式的WCF服务。

有关WCF和REST的大量信息,请参阅WCF REST Developer Center

基本上,使用WCF REST,您可以“解决”域中的所有内容作为资源; REST是面向资源的,而SOAP / ASMX是面向操作的。

所以你的方法中可能没有类似op=GetName的东西,而是像:

http://yourserver/YourWCFRESTService.svc/SomeObjectOrResource/Name

这将返回该对象或资源的名称“object”,作为XML或JSON数据流。

答案 1 :(得分:1)

正如marc_s所提到的,如果你转换或将REST作为一个端点,那么你可以让它工作。

    [OperationContract(Name = "RetrieveUser")]
    [WebGet(ResponseFormat = WebMessageFormat.Xml, UriTemplate = "/{op}")]
    public System.IO.Stream RetrieveUser(String op) { ... }

这可以让您获得操作员,然后正确回应。

我所做的是拥有一个完成工作的控制器,我的SOAP和REST服务只是处理获取请求并以正确的格式发送回来。

答案 2 :(得分:0)

类似于thisthis。简而言之,我认为不可能做到。