sql-serverwcfstored-proceduresclrstoredprocedure

clr stored procedure call wcf service missing parameter values


I'm facing a very strange issue with a WCF Service called by a CLR Stored Procedure.

Basically my service expects an array of elements as follows:

[ServiceContract]
public class ServiceFoo
{
    [OperationContract]
    bool ImportFoos(IEnumerable<Foo> foos);
}

public class Foo
{
    public int a {get;set;}
    public int b {get;set;}
    public string c {get;set;}
    public int d {get;set;}
    public string e {get;set;}
}

public class wsClient
    {
        public static void ImportFoos(int a, int b, string c, int d, string e)
        {
            ws.ServiceFoo ws = new ws.ServiceFoo();

            bool ImportFooResult = false;
            bool ImportFooResultSpecified = false;

            ws.ImportFoos(new ws.Foo[]
            {
                new ws.Foo
                {
                    a= a,
                    b = b,
                    c = c,
                    d = d,
                    e = e
                }

            }, out ImportFooResult, out ImportFooResultSpecified);
        }
    }

//SQL / CLR

public partial class StoredProcedures
{
    [Microsoft.SqlServer.Server.SqlProcedure]
    public static void sp_import_foo(int a, int b, string c, int d, string e)
    {        
        try
        {
            SqlPipe sqlPipe = SqlContext.Pipe;

            wsClient.ImportFoos(a, b, c, d, e);

            SqlContext.Pipe.Send("OK");
        }
        catch (Exception ex)
        {
            SqlContext.Pipe.Send(ex.Message + " - " + ex.StackTrace);
        }
    }
}


CREATE PROCEDURE [spWcfCall] 
    @a int, 
    @b int, 
    @c nvarchar(max), 
    @d int, 
    @e nvarchar(max)

WITH EXECUTE AS CALLER
AS
    EXTERNAL NAME CLRSample.StoredProcedures.sp_import_foo

Putting a break point inside my service, I could check that only C and E parameters are with values.

Any clues?


Solution

  • Well, it seems that it's a known bug. Here's the solution:

    http://blogs.msdn.com/b/eugeneos/archive/2007/02/05/solving-the-disappearing-data-issue-when-using-add-web-reference-or-wsdl-exe-with-wcf-services.aspx