Вопрос по .net, c#-4.0, wcf – эта операция не поддерживается в тестовом клиенте wcf, поскольку она использует тип system.object []
При запуске моей службы wcf выдается ошибка ". Эта операция не поддерживается в тестовом клиенте wcf, поскольку она использует тип system.object []".
я пытаюсь получить список запущенных процессов.
[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;
}
}
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();
}
}
ArrayList
может быть спискомчто-нибуд (таким образомobject[]
в ошибке), и тестовый клиент не может справиться с этим. Хотя в WCF совершенно законно возвращать массив произвольных объектов, вам следует рассмотреть возможность возврата фактического типа, который интересует клиента, - в этом случае массивString
следует сделать
Кроме того, чего бы это ни стоило, в современных (> 1.1) версиях .NET,ArrayList
обычно не используется. ОбщийList<T>
обычно более уместен.