8

こんにちは、wcfサービスの実行中に、「この操作は、型system.object []を使用しているため、wcfテストクライアントではサポートされていません」というエラーが表示されます。

ここに画像の説明を入力してください

実行中のプロセスリストを取得しようとしています。

[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;
        }
    }
4

2 に答える 2

3

問題は、それが何かArrayListのリストである可能性があり(したがってエラーになっている)、テストクライアントがそれを処理できないことです。WCFでは任意のオブジェクトの配列を返すことは完全に合法ですが、クライアントが関心を持っている実際の型を返すことを検討する必要があります。この場合は、配列が行う必要があります。object[]String

また、その価値については、.NETの最新(> 1.1)バージョンでArrayListは通常使用されません。通常、ジェネリックのList<T>方が適切です。

于 2012-06-01T19:19:53.333 に答える
1

文字列をサービスに追加しているので(ProcessName.ToString()-はすでにのToString()ように必須ではありませんが)、の代わりにを返すようにメソッドを定義する必要があります。ProcessNamestringList<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();
    }
}
于 2012-06-01T19:25:40.087 に答える