Вопрос по .net, c#-4.0, wcf – эта операция не поддерживается в тестовом клиенте wcf, поскольку она использует тип system.object []

8

При запуске моей службы wcf выдается ошибка ". Эта операция не поддерживается в тестовом клиенте wcf, поскольку она использует тип system.object []".

enter image description here

я пытаюсь получить список запущенных процессов.

[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)]
    class Windows_processes_Service:IWindows_processes_Service
    {
        ArrayList RunningProcesses_Name = new ArrayList();
        public ArrayList GetRunningProcesses()
        {
            Process[] processlist = Process.GetProcesses();
            foreach (Process nme_processes in processlist)
            {
                RunningProcesses_Name.Add(nme_processes.ProcessName.ToString());
            }
            return RunningProcesses_Name;
        }
    }

Ваш Ответ

2   ответа
1

ProcessName.ToString() - хотяToString() не требуется какProcessName ужеstring) к вашим услугам, вы должны определить свой метод для возвратаList<string> вместо тогоArrayList.

Это можно упростить до:

[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)]
class Windows_processes_Service:IWindows_processes_Service
{
    public List<string> GetRunningProcesses()
    {
        return Process.GetProcesses().Select(p => p.ProcessName).ToList();
    }
}
3

ArrayList может быть спискомчто-нибуд (таким образомobject[] в ошибке), и тестовый клиент не может справиться с этим. Хотя в WCF совершенно законно возвращать массив произвольных объектов, вам следует рассмотреть возможность возврата фактического типа, который интересует клиента, - в этом случае массивString следует сделать

Кроме того, чего бы это ни стоило, в современных (> 1.1) версиях .NET,ArrayList обычно не используется. ОбщийList<T> обычно более уместен.

Похожие вопросы