因为它使用System.Object类型,不支持在WCF测试客户端这个操作[]不支持、因为它、客户端、类型

2023-09-03 04:54:30 作者:时光巷陌

喜在运行我的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();
    }
}
 
如何在VBA中前期绑定FileSystemObject对象

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();
    }
}