2012-03-28 1 views
0

Silvelright 프로젝트를 참조하는 엔티티 프레임 워크가있는 RIAService가있는 프로젝트가 하나 있습니다. 그래서 RIA Service 프로젝트 DLL을 빌드하고 Silverlight 프로젝트의 Bin/Debug 폴더에 넣는 프로젝트를 빌드 할 때.Window 서비스에서 RIA Service 프로젝트 DLL 사용

도메인 서비스 기능은

[EnableClientAccess()] 
public partial class MyClassDomainService : LinqToEntitiesDomainService<MyDatabaseEntities> 
{ 
    [Invoke] 
    public void MyFunction(int Para1, string Para2, int Para3, string Para4) 
    { 
      //mycode 
    } 
} 

지금 내가 윈도우 서비스 프로젝트이 porject를 구축 오전이 RIAService.dll을 복사하여 다른 내 다른 프로젝트에 DLL을 필요로 이하 같다.

이제 윈도우 서비스에서 timerQlinkRequest_Elapsed() 함수에서 아래와 같이이 도메인 서비스의 객체를 생성합니다.

private void timerQ_Elapsed(object sender, System.Timers.ElapsedEventArgs e) 
{ 
    try 
    { 
     MyClassDomainContext objcontext = new MyClassDomainContext(); 
     objcontext.MyFunction(1, "ADD", 1234, "Vehicle"); 
    } 
    catch (Exception ex) 
    { 
     LogMessage("Error : StackTrace : " + 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) 

다음과 같이 로그 filem에 ex.stackTrace에 오류가 아래 얻을? 그렇다면 어디서 잘못 될까요?

도와주세요.

답장을 기다리는 중입니다.

+0

여러 프로젝트에서 동일한 ria 서비스를 사용하고 있습니까? 이 두 프로젝트의 동일한 제한 사항에 대한 제한 사항이 있습니까? –

+0

둘 다 다른 해결책입니다.하나는 윈도우 서비스 솔루션이며 다른 솔루션은 RIAService 프로젝트와 Silverlight 프로젝트와 Silverlight.Web 프로젝트를 가지고 있습니다. 그래서 RIAService.dll 빌드 후 붙여 넣기 복사 한 다음 한 폴더에 넣고 창 서비스 프로젝트에 사용하십시오. –

답변

0

내가 내 project.Web (ASP.NET 프로젝트) 내가 WCF RIA 서비스 내 함수를 호출하는 간단한 WCF 응용 프로그램을 만드는 다른 방법으로 솔루션,

를 얻을.

그리고 윈도우 서비스 솔루션에서 나는 그 WCF 서비스의 서비스 레퍼런스를 추가하고 그 WCF 함수를 호출하고 내 작업을 완료한다.

@ duluca 답장 보내 주시면 감사하겠습니다.

1

당신이하려는 일을해서는 안됩니다. WCF RIA는 서버 및 클라이언트 응용 프로그램의 특정 구현 사이의 간격을 메우기 위해 만들어졌습니다. 프로젝트를 빌드 할 때 클라이언트를 서버의 구현과 연결하는 모든 종류의 코드 생성이 있습니다.

지금, 당신이 여기에서 할 수있는 것은 :

    동일한 솔루션에 두 번째 클라이언트를 이동하고 Silverlight.Web 프로젝트에 두 번째 RIA 클라이언트로 추가
  1. . 프로젝트 설정에서이 작업을 수행 할 수 있으며 전체 RIA 혜택을받을 수 있습니다.
  2. 마치 WCF 서비스 인 것처럼 배포 된 RIA 서비스에 전화를 걸 수 있습니다. 결국 WCF RIA Services라고 불립니다. 이제는 코드 생성에서 제공되는 모든 지원 기능을 사용할 수 없지만 WCF 작업을 통해 수동으로 CRUD 작업을 수행 할 수 있습니다. here 도메인 서비스에 직접 연결 " "을 확인하여 svc 파일을 찾는 방법을 확인하십시오.

수정 기능을 사용하려면 1 단계 옵션을 권합니다. 그러나 두 번째 옵션은 읽기 전용 데이터에 비교적 쉽게 작동해야합니다. 그러나 다시 한번 WCF RIA에서 매우 쉽게 할 수있는 O 데이터 종점을 노출하는 것이 좋습니다.