RPC to specific target fail

I am trying to send RPCs from a Client to another Client.

However there is an error :

View ID SceneID: 0 Level Prefix: 0 not found during lookup. Strange behaviour may occur.
Could’t invoke RPC function ‘DoSomething’ because the networkView ‘SceneID: 0 Level Prefix: 0’ doesn’t exist

But they have NetworkView with same viewID.

here is the sample code:

//Server -
var ConnectedPlayer : NetworkPlayer[] = new NetworkPlayer[20];
var ConnectedSlot : boolean[] = new boolean[20];
var doItNow : boolean;

/* There are some codes for starting the server and connection not showing */

function OnPlayerConnected(player : NetworkPlayer) 
{
     for (var Connect : int = 0 ; Connect < ConnectedSlot.length ; Connect++)
     {
         if (ConnectedSlot[Connect] == true)
         {
            networkView.RPC("CallTargetToDo" , ConnectedPlayer[Connect] , player);
         }
      }
   for (var Connected : int = 0 ; Connected < ConnectedSlot.length ; Connected++)
   {
 if (ConnectedSlot[Connected] == false)
 { 
 ConnectedPlayer[Connected] = player;
 ConnectedSlot[Connected] = true;
 break;
                 }
    }
}


@RPC  // This will be done by Client A to call Client B to do something
fucntion CallTargetToDo (TargetPlayer : NetworkPlayer)
{
     networkView.RPC("DoSomething" , TargetPlayer , true);
     // Replacing TargetPlayer with RPCMode will be no error , but cannot
     // send to specific target.
}


@RPC    // This will be done by Client B
fucntion DoSomething (Done : boolean)
{
     doItNow = Done;
}

Client A Login first and nothing to do.
When Client B login , server will tell Client A to send RPC to Client B.

Any Idea of the error occurs?

After fooling around with this for much too long, I solved the problem on my end - not sure if this will solve yours. I wrote a blog entry about it: http://www.blog.niugnepsoftware.com/?p=21

Snippet from the blog:

The solution was to add an OnNetworkInstantiate ”callback” on the tank object that sends a RPC only to the server that asks for the NetworkPlayer who owns the newly created tank. The server sends a RPC back that has the “owning” NetworkPlayer. The tank object stores that away in a member variable. Now when a projectile and a tank collide, each host can correctly check the owner.

This seems like quite a bit of overhead that could have been avoided if Unity would have correctly assigned the owner of the NetworkView on each host. Hopefully they will correct that some day and this convoluted way to get the correct owner of a network object can go away.