我刚刚构建了一个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服务一般都很陌生 - 所以任何帮助都会非常感谢!
- 汤姆
答案 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)