什么可能导致Ria Services 404错误,特别是请求中包含'/ binary'

时间:2013-01-24 09:57:31

标签: silverlight silverlight-4.0 wcf-ria-services silverlight-5.0

目前正在开发中,Visual Studio 2012,Silverlight 5和Ria Services。我已经听说过部署这些问题,但我还没有那么远。

当我看到Fiddler的电话时,网址看起来像这样:

http://127.0.0.1:81/ClientBin/DanielHarris-SilverlightApp-RiaService-NameOfDomainServiceClass.svc/binary/GetColours

这是返回404,但是我不相信'/ binary'应该在URL中,并且如果它是通过请求,则调用将成功。

在此处提供更多信息是对解决方案布局的概述:

Class Library Containing an EF Entity Model (ObjectContext)
Silverlight Application
ASP.NET Web Application with a DomainService class
ASP.NET Web Application with the actual website that display the silverlight XAP
  • 带有DomainService的ASP.NET应用程序引用了EntityModel类库
  • Silverlight应用程序已启用RIA服务,SL Apps属性中的RIA服务链接设置为其中包含DomainService类的ASP.NET应用程序
  • 显示Silverlight XAP的实际网站的ASP.NET Web App会运行并在正确的位置加载控件,任何RIA调用都会失败

我想知道是否不支持将DomainService类放在它自己的.NET Web应用程序中?我的想法是,这将为RIA创建一个端点,完全独立于实际显示Silverlight控件的“Main”Web App。

那是我出错的地方吗?

编辑 - 我也尝试将实体模型从它自己的类库移动到具有DomainService类的Web应用程序中,我仍然遇到同样的问题。 DomainService,实体模型和显示Silverlight应用程序的站点是否都需要位于同一个项目中? I.E所有在一个网络应用程序下?

2 个答案:

答案 0 :(得分:1)

默认情况下,Silverlight应用程序将尝试在托管它的应用程序中找到DomainService。如果您希望将DomainService放在不同的URL上,则需要将该URL传递给DomainContext的构造函数。

如果您使用单独的类库,则需要确保Web应用程序引用类库或bin目录中具有类库的dll。您还需要RIA Services dll和web.config设置。现在最简单的方法是将RiaServices.Server NuGet包添加到类库和Web应用程序中。新包引用了正确的dll并设置了web.config。

答案 1 :(得分:0)

默认情况下,silverlight(ria svc)使用二进制端点。

WCF压缩xml,它将是二进制文件。否则它可能很重。

当我在fiddler中跟踪它时,我总是在域服务调用上看到/ binary表达式。我也用EF。 所以二进制文件应该在url中。我认为它应该是配置错误。

这是我的要求

/ClientBin/AHBSBus-Web-DomainSrv-DSrvSecurity.svc/binary/getServerDate

//请求

< getServerDate xmlns =“http://tempuri.org/”> < / getServerDate>

//响应

< getServerDateResponse xmlns =“http://tempuri.org/”>  < getServerDateResult> 2013-01-24T15:53:13.4574466 + 02:00 < / getServerDateResponse>

http://blogs.msdn.com/b/saurabh/archive/2009/11/23/understanding-the-wcf-in-wcf-ria-services.aspx

RIA Services ServiceHost默认创建以下端点 -

a)对于Silverlight客户端:SOAP w /二进制端点。 Address =“binary”,Binding = CustomBinding,包含HttpTransportBindingElement和BinaryMessageEncodingBindingElement ..

您可以通过记录详细信息来跟踪绑定。将这些行放在web.config中运行项目并打开日志文件。

<system.diagnostics> 
<trace autoflush="true"> 
    <listeners> 
    </listeners> 
</trace> 
<sources> 
    <source name="System.ServiceModel" 
            switchValue="Information, ActivityTracing" 
            propagateActivity="true"> 
        <listeners> 
            <add name="sdt" 
                 type="System.Diagnostics.XmlWriterTraceListener" 
                 initializeData= "WcfDetailTrace.svclog" /> 
        </listeners> 
    </source> 
</sources>