.net wcf测试客户端不支持此操作,因为它使用system.object[]类型
您好,在运行我的wcf服务时,它向我发出错误“wcf测试客户端不支持此操作,因为它使用system.object[]类型” 我正在尝试检索正在运行的进程列表.net wcf测试客户端不支持此操作,因为它使用system.object[]类型,.net,wcf,c#-4.0,.net,Wcf,C# 4.0,您好,在运行我的wcf服务时,它向我发出错误“wcf测试客户端不支持此操作,因为它使用system.object[]类型” 我正在尝试检索正在运行的进程列表 [ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)] class Windows_processes_Service:IWindows_processes_Service { ArrayList RunningProcesses_
[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;
}
}
问题是,
ArrayList
可以是任何内容的列表(因此,object[]
在错误中),而测试客户机无法处理这个问题。在WCF中返回任意对象数组是完全合法的,但您应该考虑返回客户端感兴趣的实际类型——在这种情况下,“代码>字符串应该做一个数组。
另外,在现代(>1.1)版本的.NET上,通常不使用
ArrayList
。一般的列表
通常更合适。因为您正在向您的服务添加字符串(ProcessName.ToString()
)-虽然不需要ToString()
,因为ProcessName
已经是字符串了,您应该定义返回列表的方法,而不是ArrayList
这可以简化为:
[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)]
class Windows_processes_Service:IWindows_processes_Service
{
public List<string> GetRunningProcesses()
{
return Process.GetProcesses().Select(p => p.ProcessName).ToList();
}
}
[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)]
类Windows\u进程\u服务:IWindows\u进程\u服务
{
公共列表GetRunningProcess()
{
return Process.getProcesss().Select(p=>p.ProcessName.ToList();
}
}