views:

75

answers:

1

I have a simple WCF service method:

[OperationContract]
public SetupGameResult SetupGame(long player1Id, long player2Id, long myPlayerId)
    {
        if(player1Id == 0 || player2Id == 0 || myPlayerId == 0)
        {
            throw new ArgumentException();
        }

        ... // other code
    }

I call this Service just in one place in my silverlight application. Here:

        if(player1Id == 0 || player2Id == 0 || myPlayerId == 0)
        {
            throw new ArgumentException();
        }

        // Setup Game
        GameServiceClient gameService = new GameServiceClient();
        gameService.SetupGameCompleted += new EventHandler<SetupGameCompletedEventArgs>(gameService_SetupGameCompleted);
        gameService.SetupGameAsync(player1Id, player2Id, myPlayerId);

Normally SetupGame is never called with myPlayerId = 0. But to be sure i check before calling the service method.

The problem is that the service method gets called correctly once and at the second call it throws the argument exception because myPlayerId = 0.

That's strange cause i check before calling if it's 0.

What problem could it be?

EDIT:
Seems that there really is a problem with Serialization/Deserialization.

But what reasons could that have?

EDIT 2:
I get the following warning during buidling. Could that be the issue?

Warning 12  Client proxy generation for service 'Car_Motion.Web.Services.GameService' failed: Generating metadata files...
Warning: Unable to load a service with configName 'Car_Motion.Web.Services.GameService'. To export a service provide both the assembly containing the service type and an executable with configuration for this service.
Details:Either none of the assemblies passed were executables with configuration files or none of the configuration files contained services with the config name 'Car_Motion.Web.Services.GameService'.
Warning: No metadata files were generated. No service contracts were exported.
To export a service, use the /serviceName option. To export data contracts, specify the /dataContractOnly option. This can sometimes occur in certain security contexts, such as when the assembly is loaded over a UNC network file share. If this is the case, try copying the assembly into a trusted environment and running it.

Thanks in advance

+1  A: 

Ben, I think there is some problem with your service reference and the proxy class is not properly generated so the long values might be getting the default value of 0. please check the following items once

  1. Make sure your WCF service compiles
  2. try removing and adding the service reference once
  3. try to manually run svcutil.exe from the VS command line. svcutil has a known bug that when you run it against a service assembly with a config file that has , it will fail in the way you saw. The workaround is to comment out the section before running svcutil.
Vinay B R
Hi i had a issue with the browser caches. The browser didn't download the newest Silverlight Control. Since i like your answer i make it the accepted one ;-)
Ben