问题:
调用从Silverlight调用其他服务的服务是否存在已知问题?
情境:
我有以下3个项目:
SilverlightClient - 带按钮的Silverlight项目
SilverlightClient.Web - 托管SilverlightClient.xap的Web应用程序。
BackEnd - 承载 FOO 服务的另一个Web应用程序,它执行一些特殊的后端处理。
我在SilverlightClient.Web和Backend中创建了一个支持Silverlight WCF的Web服务。它们分别是 SilverlightClientService 和 BackEndService 。
从 SilverlightClient.Web 我添加对 BackEndService 的服务引用。我有一个测试ASPX页面,我编写了成功调用 BackEndService 的代码。
从 SilverlightClient 我添加了对 SilverlightClient.Web 的 SilverlightClientService 的服务引用。如果我的 SilverlightClientService 返回纯数据,例如字符串,那么它的效果非常好。
但是,当我更改 SilverlightClientService 以调用 BackEndService 时,我得到以下异常:
HTTP 415 - “请求失败,HTTP状态415:不支持的媒体类型。”
答案 0 :(得分:1)
我遇到了2个没有通信的服务的问题。我们终于发现使用Cassini(内置的Visual Studio IIS)来托管ListenerService“BackEnd”导致了这个问题。将项目切换为在IIS的虚拟目录中启动允许两者进行通信。
我看到:收到http://localhost:1484/MainListenerService.cs的HTTP响应时发生错误。这可能是由于服务端点绑定不使用HTTP协议。这也可能是由于服务器中止HTTP请求上下文(可能是由于服务关闭)。请参阅服务器日志以获取更多详而这个错误: 客户端身份验证方案“Anonymous”禁止HTTP请求。
答案 1 :(得分:0)
您使用的是basicHttpBinding吗? Silverlight仅支持basicHttpBinding,但创建WCF服务时的默认值是wsHttpBinding。在添加Silverlight项目的引用之前,应该在web.config上更改它。观看Tim Heuer的视频:http://silverlight.net/learn/videos/all/how-to-consume-wcf-and-aspnet-web-services-in-silverlight/