Как заставить клиентское приложение получать все строки таблицы в базе данных из серверного приложения через интерфейс общей библиотеки с помощью .net remoting - PullRequest
0 голосов
/ 31 декабря 2018

У меня есть сеточное представление в клиентском приложении удаленного взаимодействия, и мне нужно заполнить его результатом запроса remoting linq, который находится в приложении удаленного сервера.

Я использую .net remoting с веб-формойклиентское приложение, интерфейсный класс в качестве разделяемой библиотеки, консольное приложение в качестве сервера имеет linq to sql database (StudentsDB).

Я попытался определить метод массива в интерфейсе и внедрить его на сервере.Но я всегда получаю сообщение об ошибке, что Interface.array не может быть преобразован или преобразован в server.array

Класс совместно используемой библиотеки

public interface IMyRemoteStudent
{
     Array getAllStudents();
}

Сервер

namespace Server
{
    public class RemoteStudent : MarshalByRefObject, IMyRemoteStudent
    {
        public RemoteStudent()
        {
        }

        public Array getAllStudents()
        {
            var ctx = new LinqDataContext();
            var std = (from ss in ctx.Students
                       select ss).ToArray();

            return std;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
                HttpChannel chnl = new HttpChannel(1234);
                ChannelServices.RegisterChannel(chnl, false);
                RemoteStudent Obj = new RemoteStudent();
                RemotingServices.Marshal(Obj, "MyRemote.soap");
        }
    }
}

Клиент

 protected void btn_Add_Click(object sender, EventArgs e)
 {
     HttpChannel chnl = new HttpChannel();
     ChannelServices.RegisterChannel(chnl, false);

     IMyRemoteStudent ST = (IMyRemoteStudent)Activator.GetObject(typeof(IMyRemoteStudent),
                    "http://localhost:1234/MyRemote.soap");

     Array arr = ST.getAllStudents()
     gridview.datasource = arr;
}

Все ответы в Интернете помогают совместно использовать один объект ученика, но мне нужно получить всех учеников как list<> или как array[], или как любой тип объекта

...