2010-10-14 80 views
1

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

我对WCF和一般的Web服务相当陌生 - 所以任何帮助将不胜感激!

-Tom

回答

2

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

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

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

所以,你可能不会有这样的事情op=GetName在你的方法,而是类似:

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

,这都将返回一个对象或资源的名称“对象”,如XML或JSON数据流。

+0

太棒了!我会在今天下午晚些时候尝试,并让你知道它是如何发生的。 – arctek 2010-10-14 18:23:36

0

类似thisthis。总之,我不认为这是可以做到的。

1

正如marc_s提到的,如果您将REST转换为REST或将其作为一个端点,那么您可以使其工作。

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

这可能使您得到操作员,然后正确响应。

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

+0

谢谢詹姆斯 - 今天下午我会试试这些。我会让你知道它是怎么回事。 – arctek 2010-10-14 18:24:39