Wcf 使用RIA服务项目';windows服务中的动态链接库

Wcf 使用RIA服务项目';windows服务中的动态链接库,wcf,windows-services,wcf-ria-services,Wcf,Windows Services,Wcf Ria Services,我有一个项目,其中包含RIAService和实体框架,该框架引用了我的Silvelright项目。所以,当我构建RIA服务项目的DLL并将其放入Silverlight项目的Bin/Debug文件夹时 域服务功能如下所示 [EnableClientAccess()] public partial class MyClassDomainService : LinqToEntitiesDomainService<MyDatabaseEntities> { [Invoke]

我有一个项目,其中包含RIAService和实体框架,该框架引用了我的Silvelright项目。所以,当我构建RIA服务项目的DLL并将其放入Silverlight项目的Bin/Debug文件夹时

域服务功能如下所示

[EnableClientAccess()]
public partial class MyClassDomainService : LinqToEntitiesDomainService<MyDatabaseEntities>
{
    [Invoke]
    public void MyFunction(int Para1, string Para2, int Para3, string Para4)
    {
          //mycode
    }
}
安装并启动Windows服务后,我在日志文件m中的ex.stackTrace中发现以下错误,如下所示

Error : StackTrace :    at MS.Internal.JoltHelper.get_Context()
   at MS.Internal.XcpImports.Application_GetCurrent(IntPtr& pApp)
   at System.Windows.Application.get_Current()
   at System.ServiceModel.DomainServices.Client.WebDomainClient`1.ComposeAbsoluteServiceUri()
   at System.ServiceModel.DomainServices.Client.WebDomainClient`1..ctor(Uri serviceUri)
   at RIAService.Web.Service.QLink.MyClassDomainContext..ctor()
   at MywindowService.MyService1.timerQ_Elapsed(Object sender, ElapsedEventArgs e)
所以我最困惑的是,我能这样做吗?如果是,那么我错在哪里

请帮帮我


等待答复。

你不应该做你想做的事。创建WCF RIA是为了弥合服务器和客户端应用程序的特定实现之间的差距。当您构建项目时,会有各种各样的代码生成将客户机与服务器上的实现联系起来

现在,您可以在这里做的是:

  • 将第二个客户端移动到同一个解决方案中,并将其作为第二个RIA客户端添加到Silverlight.Web项目中。您可以从项目设置中执行此操作,您将获得完全的RIA好处
  • 您可以尝试调用已部署的RIA服务,就好像它是WCF服务一样;毕竟,它被称为WCF RIA服务是有原因的。现在您无法获得所有内置支持(主要由代码生成提供),但仍然可以通过WCF操作手动执行CRUD操作。选中“直接浏览到域服务”部分, 查看如何定位svc文件

  • 如果你想要编辑功能,我推荐第一个选项。但对于只读数据,第二个选项应该可以相对轻松地工作。但同样,我建议公开一个O-Data端点,这在WCF RIA中很容易做到。

    我以另一种方式得到了解决方案

    在我的project.Web(ASP.NET项目)中,我创建了一个简单的WCF应用程序,它调用我的WCF RIA服务函数

    在窗口服务解决方案中,我添加了那个WCF服务的服务引用,并调用那个WCF函数来完成我的任务


    @多卢卡感谢您的回复。

    您是否正在尝试从多个项目中使用相同的ria服务?这两个项目在同一个解决方案中是否存在任何限制?它们都是不同的解决方案。一个是窗口服务解决方案,另一个解决方案有RIAService项目、silverlight项目和silverlight.Web项目。所以,在构建RIAService.dll之后,我复制粘贴,然后将其放在一个文件夹中,并将其用于窗口服务项目。
    Error : StackTrace :    at MS.Internal.JoltHelper.get_Context()
       at MS.Internal.XcpImports.Application_GetCurrent(IntPtr& pApp)
       at System.Windows.Application.get_Current()
       at System.ServiceModel.DomainServices.Client.WebDomainClient`1.ComposeAbsoluteServiceUri()
       at System.ServiceModel.DomainServices.Client.WebDomainClient`1..ctor(Uri serviceUri)
       at RIAService.Web.Service.QLink.MyClassDomainContext..ctor()
       at MywindowService.MyService1.timerQ_Elapsed(Object sender, ElapsedEventArgs e)