Dot-Net
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它已經是 astring),所以您應該定義您的方法以返回 aList<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應該使用數組。此外,對於它的價值,在.NET 的現代(>1.1)版本上,
ArrayList通常不使用。泛型List<T>通常更合適。
