2023.12.07일, VS2019 + VS2022 사용을 기준으로 함.
https://marketplace.visualstudio.com/items?itemName=OpenRiaServices.OpenRiaServicesTooling
웹 서버 생성 (Web-ASP.NET Web Application(.NET Framework) -> Empty -> Host in the cloud)
Authentication을 No Authentication을 사용했는데 인증방식은 Forms인증을 사용하므로 web.config에 아래처럼 추가 해 주어야 한다.
<authentication mode="Forms" />
실제 WPF어플리케이션이 될 MyProject 와 Web의 DomainService를 받아 자동생성 코드를 만들어줄 RIA.MyProject를 생성
이렇게 하고 빌드를 하게되면 아래와 같은 오류가 생긴다.
이 문제는 VS2022에서 프로젝트를 열어 리빌드를 해주고 나면 해결이 되고 그 뒤로는 VS2019에서도 잘 동작한다.
※이유는 알 수 없으나 6,7 순서가 뒤바뀌면 위 문제가 해결되지 않는다!
※순서의 영향이 있다고 생각했으나, 프로젝트 빌드가 성공 한 후에도 위와같은 에러가 간헐적으로 발생, 이를 해결하기 위해 다른 프로젝트에서 Mono.Cecil.0.11.5 라이브러리를 받아 프로젝트이 pacakges폴더에 넣어줌으로 해결
※ 라이브러리를 추가하지 않으면 아래 RIA프로젝트와 연결을 해도 자동생성 코드가 만들어지지 않는다.
그리고 g.cs파일에서 svc의 이름을 체크해두자
using OpenRiaServices.Client;
using OpenRiaServices.Client.Web;
using System;
using System.ServiceModel.Channels;
using System.Windows;
namespace MyProject
{
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
InitOpenRiaService();
}
private static void InitOpenRiaService()
{
DomainContext.DomainClientFactory = new CustomWebDomainClientFactory()
{
ServerBaseUri = new Uri("https://localhost:44369/" + "WEB-MyProject-Services-MainDoS.svc"),
};
}
}
[Obsolete]
public class CustomWebDomainClientFactory : WebDomainClientFactory
{
protected override Binding CreateBinding(Uri endpoint, bool requiresSecureEndpoint)
{
var binding = base.CreateBinding(endpoint, requiresSecureEndpoint);
binding.SendTimeout = new TimeSpan(05, 00, 00);
return binding;
}
}
}
MainDoS dos = new MainDoS();
var res = await dos.LoadAsync(dos.GetResourceLogsQuery().Take(100));