喜在运行我的WCF服务,它给我的错误,因为它使用System.Object类型[]不支持在WCF测试客户端这个操作
我尝试检索正在运行的进程列表中。
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)
类Windows_processes_Service:IWindows_processes_Service
{
ArrayList的RunningProcesses_Name =新的ArrayList();
公众的ArrayList GetRunningProcesses()
{
流程[] PROCESSLIST = Process.GetProcesses();
的foreach(在PROCESSLIST过程nme_processes)
{
RunningProcesses_Name.Add(nme_processes.ProcessName.ToString());
}
返回RunningProcesses_Name;
}
}
解决方案
既然你添加字符串( ProcessName.ToString()
- 尽管的ToString()
不需要为 ProcessName
已经是字符串
)为您服务,你应该定义你的方法返回一个名单,其中,串>
而不是的ArrayList
这可以简化为:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)
类Windows_processes_Service:IWindows_processes_Service
{
公开名单<字符串> GetRunningProcesses()
{
返回Process.GetProcesses()选择(P => p.ProcessName)。.ToList();
}
}
hi while running my wcf service it gives me error "this operation is not supported in the wcf test client because it uses type system.object[]"
i m trying to retrieve the running process list.
[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;
}
}
解决方案
Since you're adding strings (ProcessName.ToString()
- though ToString()
is not required as ProcessName
is already a string
) to your service, you should define your method to return a List<string>
instead of ArrayList
.
This can be simplified to:
[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)]
class Windows_processes_Service:IWindows_processes_Service
{
public List<string> GetRunningProcesses()
{
return Process.GetProcesses().Select(p => p.ProcessName).ToList();
}
}