Hi,

I use the firebird .net provider together with the asp.net session
state store provider.

First, i got a InvalidCastException, when the session ID string is
tried to be casted to
a byte array within the command parameter.

The method this error occured is the
FbSessionStateStore.SetAndReleaseItemExclusive.

I don't understand why the Varchar 80 field (domain WP_VARCHAR80_OCTET) should
be casted to a byte[], but if it tries to I want to help, so I changed
the method and used
System.Text.Encoding.Default.GetBytes(id) to put a byte[] into the
parameter value
for the sessionid.

Now I get this error:
validation error for column SESSIONID, value "*** null ***"

The Stack trace is:

[IscException: validation error for column SESSIONID, value "*** null ***"]
   
FirebirdSql.Data.Client.Managed.Version10.GdsDatabase.ProcessResponse(IResponse
response) +191
   FirebirdSql.Data.Client.Managed.Version10.GdsDatabase.ReadResponse() +68
   FirebirdSql.Data.Client.Managed.Version10.GdsDatabase.ReadGenericResponse()
+13
   FirebirdSql.Data.Client.Managed.Version11.GdsStatement.Execute() +391
   FirebirdSql.Data.FirebirdClient.FbCommand.ExecuteNonQuery() +64

[FbException (0x1400001b): validation error for column SESSIONID,
value "*** null ***"]
   FirebirdSql.Data.FirebirdClient.FbCommand.ExecuteNonQuery() +222
  
FirebirdSql.Web.Providers.FbSessionStateStore.SetAndReleaseItemExclusive(HttpContext
context, String id, SessionStateStoreData item, Object lockId, Boolean
newItem) +194
   System.Web.SessionState.SessionStateModule.OnReleaseState(Object
source, EventArgs eventArgs) +775
   
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
+80
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step,
Boolean& completedSynchronously) +171

The value of the parameter is definetly not null. In the line right
before ExecuteNonQuery the parameter HAS the correct value of the
session id. Though, when tracing the statement on the database with
IBExpert, this is the result:

Statement 2225:
-------------------------------------------------------------------------------
INSERT INTO SESSIONS
            (SESSIONID, APPLICATIONNAME, CREATED, EXPIRES, LOCKDATE,
LOCKID, TIMEOUT, LOCKED, SESSIONITEMS, FLAGS) VALUES
            (?, ?, ?, ?, ?, ? , ?, ?, ?, ?)

param0 = varchar(80), "<NULL>"
param1 = varchar(100), ""
param2 = timestamp, "2011-05-18T20:00:05.4490"
param3 = timestamp, "2011-05-18T20:20:05.4490"
param4 = timestamp, "2011-05-18T20:00:05.4490"
param5 = integer, "0"
param6 = integer, "20"
param7 = smallint, "0"
param8 = blob, "0000000000000001"
param9 = integer, "0"

So a NULL get's send to the database, allthough the parameter value
has the correct id.

So what's wrong here?

Thanks in advance,

   Sebastian

------------------------------------------------------------------------------
What Every C/C++ and Fortran developer Should Know!
Read this article and learn how Intel has extended the reach of its 
next-generation tools to help Windows* and Linux* C/C++ and Fortran 
developers boost performance applications - including clusters. 
http://p.sf.net/sfu/intel-dev2devmay
_______________________________________________
Firebird-net-provider mailing list
Firebird-net-provider@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/firebird-net-provider

Reply via email to