RE: WebPart Personalization Blob Deserialize Error



Steven

Thanks for you reply. I can see where you are going with this, however what
we're trying to do is way simpler. We're using the standard provider and
everything's working fine for the regular webpart customization scenario.

However, we are working on some utilities to provide the webmaster, one of
which needs to search the properties of the webparts on a page for certain
string values. So I want to desterilize the blob into the object graph and
iterate through the properties.

There is an article that suggests this has been achieved before, however it
does not tell the full story on how to do it:

http://dotnetjunkies.com/WebLog/teund/archive/2005/03/08/WebPartManager_Storage.aspx

Hope this makes it a little clearer?

Thanks

Tom John
"Steven Cheng[MSFT]" wrote:

Hi Tom,

From your description, you're writing your custom code to load binary data
from ASP.NET webpart personalization database and deserialize againstit,
however,you're encountering some error on it , correct?

Based on my understanding, it is only when you developing a custom
personalization provider or customize the existing one will you need to
deal with the underlying binary data blob's load & store. So are you
developing your custom webpart personalization provider?

If you're customizing the default SQL personalization provider or also use
the same database, you can have a look at the built-in provider's code
implementation on how to retrieve the binary blob from database. Here is
the code I picked from reflector (of the SqlPersonalizationProvider class)

==================================
private byte[] LoadPersonalizationBlob(SqlConnection connection, string
path, string userName)
{
SqlCommand command;
if (userName != null)
{
command = new
SqlCommand("dbo.aspnet_PersonalizationPerUser_GetPageSettings", connection);
}
else
{
command = new
SqlCommand("dbo.aspnet_PersonalizationAllUsers_GetPageSettings",
connection);
}
this.SetCommandTypeAndTimeout(command);
command.Parameters.Add(this.CreateParameter("@ApplicationName",
SqlDbType.NVarChar, this.ApplicationName));
command.Parameters.Add(this.CreateParameter("@Path",
SqlDbType.NVarChar, path));
if (userName != null)
{
command.Parameters.Add(this.CreateParameter("@UserName",
SqlDbType.NVarChar, userName));
command.Parameters.Add(this.CreateParameter("@CurrentTimeUtc",
SqlDbType.DateTime, DateTime.UtcNow));
}
SqlDataReader reader = null;
try
{
reader = command.ExecuteReader(CommandBehavior.SingleRow);
if (reader.Read())
{
int length = (int) reader.GetBytes(0, (long) 0, null, 0, 0);
byte[] buffer = new byte[length];
reader.GetBytes(0, (long) 0, buffer, 0, length);
return buffer;
}
}
finally
{
if (reader != null)
{
reader.Close();
}
}
return null;
}
=========================================

Also, here are some other reference on building custom personalization
provider:

http://msdn2.microsoft.com/en-US/library/aa479037.aspx

http://msdn.microsoft.com/msdnmag/issues/05/09/WebParts/

Hope this helps.

Sincerely,

Steven Cheng

Microsoft MSDN Online Support Lead



==================================================

Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif
ications.



Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/subscriptions/support/default.aspx.

==================================================


This posting is provided "AS IS" with no warranties, and confers no rights.


.



Relevant Pages

  • RE: Help with user LDAP Profiles
    ... I ended up contact support and we found the error. ... disabled all custom code and tested before calling support). ... provider was returning the incorrect username which was causing the issue. ... we setup the LDAP Provider and imported the user profiles, ...
    (microsoft.public.sharepoint.portalserver)
  • Re: Questions about ghosting and unghosting
    ... "Microsoft does not support modifying the default set of site ... "Microsoft does not support modifying a custom site definition or a ... area definition after you create a new site or a new portal area by ... The big performance hit from unghosting is that the page layout is ...
    (microsoft.public.sharepoint.windowsservices)
  • Re: Questions about ghosting and unghosting
    ... "Microsoft does not support modifying the default set of site ... "Microsoft does not support modifying a custom site definition or a ... area definition after you create a new site or a new portal area by ... The big performance hit from unghosting is that the page layout is ...
    (microsoft.public.sharepoint.windowsservices)
  • Re: DIME WSE 2.0 in .NET 2.0
    ... \par Thanks - Rich F. ... it is pity that WSE 3.0 no longer support DIME. ... \par> DIME is removed is because WSE is an .NET based implementation of the WS-* ... If we need only to maintain the custom security dlls in .NET ...
    (microsoft.public.dotnet.framework.webservices.enhancements)
  • Re: Cannot start services
    ... | Computer: COUNTYG ... see Help and Support Center at ... | A provider, PerfProv, has been registered in the WMI namespace, ... | will be run using the LocalSystem account. ...
    (microsoft.public.windows.server.general)