查询类似WCF的标准ASMX web服务

查询类似WCF的标准ASMX web服务,wcf,web-services,asmx,Wcf,Web Services,Asmx,我最近刚刚构建了一个Silverlight应用程序,它通过WCF与服务器通信。我们来回通信的数据是无缝的,老实说,非常容易实现(w/SL)。不幸的是,我需要类似于ASMXWeb服务的能力从WCF请求相同的信息。现在,我正在本地运行服务(http://localhost/aps.svc)但我无法通过web浏览器“调用”任何方法(类似于asmx web服务)。例如:将返回一个名称。我需要这个能力,因为我们的第三方软件仅限于使用web asmx服务,我想使用已经构建的WCF 一般来说,我对WCF和we

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

一般来说,我对WCF和web服务是相当陌生的,所以非常感谢您的帮助


-汤姆与和相似。简而言之,我认为这是不可能的。

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

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

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

因此,您的方法中可能没有类似于
op=GetName
的内容,而是类似于:

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

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

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

    [OperationContract(Name = "RetrieveUser")]
    [WebGet(ResponseFormat = WebMessageFormat.Xml, UriTemplate = "/{op}")]
    public System.IO.Stream RetrieveUser(String op) { ... }
这可以让您获得操作员,然后正确响应


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

太棒了!今天下午晚些时候我会试试这个,让你知道它是怎么回事。谢谢詹姆斯-今天下午我要试试这个。我会告诉你事情的进展。