0

这目前正在开发中,包括 Visual Studio 2012、Silverlight 5 和 Ria Services。我听说过这些部署问题,但我还没有做到这一点。

当我查看 Fiddler 中的调用时,url 看起来像这样:

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 应用程序属性中的 RIA 服务链接设置为其中包含 DomainService 类的 ASP.NET 应用程序
  • 带有显示 Silverlight XAP 的实际网站的 ASP.NET Web 应用程序运行并在正确的位置正常加载控件,任何 RIA 调用都失败

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

那是我要去错了吗?

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

4

2 回答 2

1

默认情况下,Silverlight 应用程序将尝试在托管它的应用程序中查找 DomainService。如果您想让 DomainService 位于不同的 URL,那么您需要将该 URL 传递给 DomainContext 的构造函数。

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

于 2013-01-24T22:31:51.153 回答
0

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

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

当我在提琴手中跟踪它时,我总是在域服务调用中看到 /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。地址 = “二进制”,绑定 = 由 HttpTransportBindingElement 和 BinaryMessageEncodingBindingElement 组成的 CustomBinding ..

您可以通过记录详细信息来跟踪您的绑定。将这些行放在您的 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> 

于 2013-01-24T13:59:44.280 回答