目前正在开发中,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类放在它自己的.NET Web应用程序中?我的想法是,这将为RIA创建一个端点,完全独立于实际显示Silverlight控件的“Main”Web App。
那是我出错的地方吗?
编辑 - 我也尝试将实体模型从它自己的类库移动到具有DomainService类的Web应用程序中,我仍然遇到同样的问题。 DomainService,实体模型和显示Silverlight应用程序的站点是否都需要位于同一个项目中? I.E所有在一个网络应用程序下?
答案 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>