I'm trying to use Velocity as a session state manager and getting the following exception

Answered I'm trying to use Velocity as a session state manager and getting the following exception

  • Wednesday, June 04, 2008 6:55 PM
     
     

    Hi,

     

    I'm trying to use Velocity as a session state manager and getting the following exception:

     

    Line 47:     <sessionState cookieless="false" regenerateExpiredSessionId="true" mode="Custom" customProvider="Velocity">
    Line 48: 			<providers>
    Line 49: 				<add name="Velocity" type="System.Data.Caching.SessionStoreProvider"/>
    Line 50: 			</providers>
    Line 51: 		</sessionState>

     

    web.config:

     

    <sessionState cookieless="false" regenerateExpiredSessionId="true" mode="Custom" customProvider="Velocity">

    <providers>

    <add name="Velocity" type="System.Data.Caching.SessionStoreProvider"/>

    </providers>

    </sessionState>

     

    Are there any examples on how to set it up to be used as session state manager?

     

    Regards,

    Alexei

All Replies

  • Wednesday, June 04, 2008 6:57 PM
     
     

    Sorry, forgot to include the exception message:

     


    Parser Error Message: The type initializer for 'System.Fabric.Common.EventLogWriter' threw an exception.

    Source Error:

     

  • Thursday, June 05, 2008 2:11 AM
     
     

    Here is a blog article that describes how to do this.

     

    http://www.wiredprairie.us/blog/index.php/archives/331

     

    We will also soon blog more details on the Velocity Blog

     

  • Thursday, June 05, 2008 5:56 AM
     
     
    Can you share more of your configuration file (web.config) ??

     

  • Thursday, June 05, 2008 12:39 PM
     
     

    There might be some issues with the <web.config> file. You may use "web.config" with following contents:

     

    <?xml version="1.0"?>

    <configuration>

                <configSections>

                    <section name="dcacheClient" type=" System.Configuration.IgnoreSectionHandler"

                      allowLocation="true" allowDefinition="Everywhere"/>

                </configSections>

         

    <dcacheClient deployment="simple" localCache="false">

                      <hosts>

                      <!--List of hosts -->

                      <host name="<serviceHostName>" cachePort="22233" cacheHostName="DistributedCacheService"/>

                      </hosts>

                </dcacheClient>

    <system.web>

    <sessionState  mode="Custom" customProvider="SessionStoreProvider">

    <providers>

                                                                    <add name="SessionStoreProvider" type="System.Data.Caching.SessionStoreProvider, ClientLibrary"/>

                                                    </providers>

                                                    </sessionState>

    </system.web>

    </configuration>

     

    Replace <serviceHostName> with the hostname of machine your cache service is running, By default service uses  port no:  22233, modify "cachePort" if different port is used. Tomarrow, we will also be posting a detailed blog post about how to use session store provider shipped with the product at product blog.

    Let's us know if you still face the problem.
  • Thursday, June 05, 2008 1:55 PM
     
     

    Here is my web.config file.

     

    <?xml version="1.0"?>
    <configuration>
      <configSections>
        <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
          <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
            <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
            <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
              <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/>
              <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
              <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
              <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
            </sectionGroup>
          </sectionGroup>
        </sectionGroup>
        <section name="dcacheClient" type="System.Configuration.IgnoreSectionHandler" allowLocation="true" allowDefinition="Everywhere"/>
        <section name="fabric" type="System.Fabric.Common.ConfigFile, FabricCommon, Culture=neutral, PublicKeyToken=null" allowLocation="true" allowDefinition="Everywhere"/>
      </configSections>
      <dcacheClient deployment="simple" localCache="false">
        <hosts>
          <!--List of hosts -->
          <host name="localhost" cachePort="22233" cacheHostName="DistributedCacheService"/>
        </hosts>
      </dcacheClient>
      <fabric>
        <section name="logging" path="c:\weblogs">
          <collection name="sinks" collectionType="list">
            <customType className="System.Fabric.Common.EventLogger,FabricCommon" sinkName="System.Fabric.Common.ConsoleSink,FabricCommon" sinkParam="" defaultLevel="-1"/>
            <customType className="System.Fabric.Common.EventLogger,FabricCommon" sinkName="System.Fabric.Common.FileEventSink,FabricCommon" sinkParam="CacheClientLog" defaultLevel="1"/>
            <customType className="System.Fabric.Common.EventLogger,FabricCommon" sinkName="System.Data.Caching.ETWSink, CacheBaseLibrary" sinkParam="" defaultLevel="-1"/>
          </collection>
        </section>
      </fabric>
      <appSettings/>
      <connectionStrings/>
      <system.web>
        <!--
                Set compilation debug="true" to insert debugging
                symbols into the compiled page. Because this
                affects performance, set this value to true only
                during development.

                Visual Basic options:
                Set strict="true" to disallow all data type conversions
                where data loss can occur.
                Set explicit="true" to force declaration of all variables.
            -->
        <sessionState cookieless="false" regenerateExpiredSessionId="true" mode="Custom" customProvider="Velocity">
       <providers>
        <add name="Velocity" type="System.Data.Caching.SessionStoreProvider, ClientLibrary"/>
       </providers>
      </sessionState>


        <compilation debug="true" strict="false" explicit="true">
          <assemblies>
            <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
          </assemblies>
        </compilation>
        <pages>
          <namespaces>
            <clear/>
            <add namespace="System"/>
            <add namespace="System.Collections"/>
            <add namespace="System.Collections.Generic"/>
            <add namespace="System.Collections.Specialized"/>
            <add namespace="System.Configuration"/>
            <add namespace="System.Text"/>
            <add namespace="System.Text.RegularExpressions"/>
            <add namespace="System.Linq"/>
            <add namespace="System.Xml.Linq"/>
            <add namespace="System.Web"/>
            <add namespace="System.Web.Caching"/>
            <add namespace="System.Web.SessionState"/>
            <add namespace="System.Web.Security"/>
            <add namespace="System.Web.Profile"/>
            <add namespace="System.Web.UI"/>
            <add namespace="System.Web.UI.WebControls"/>
            <add namespace="System.Web.UI.WebControls.WebParts"/>
            <add namespace="System.Web.UI.HtmlControls"/>
          </namespaces>
          <controls>
            <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
          </controls>
        </pages>
        <!--
                The <authentication> section enables configuration
                of the security authentication mode used by
                ASP.NET to identify an incoming user.
            -->
        <authentication mode="Windows"/>
        <!--
                The <customErrors> section enables configuration
                of what to do if/when an unhandled error occurs
                during the execution of a request. Specifically,
                it enables developers to configure html error pages
                to be displayed in place of a error stack trace.

            <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
                <error statusCode="403" redirect="NoAccess.htm" />
                <error statusCode="404" redirect="FileNotFound.htm" />
            </customErrors>
            -->
        <httpHandlers>
          <remove verb="*" path="*.asmx"/>
          <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
          <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
          <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
        </httpHandlers>
        <httpModules>
          <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        </httpModules>
      </system.web>
      <system.codedom>
        <compilers>
          <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
            <providerOption name="CompilerVersion" value="v3.5"/>
            <providerOption name="OptionInfer" value="true"/>
            <providerOption name="WarnAsError" value="false"/>
          </compiler>
        </compilers>
      </system.codedom>
      <!--
            The system.webServer section is required for running ASP.NET AJAX under Internet
            Information Services 7.0.  It is not necessary for previous version of IIS.
        -->
      <system.webServer>
        <validation validateIntegratedModeConfiguration="false"/>
        <modules>
          <remove name="ScriptModule"/>
          <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        </modules>
        <handlers>
          <remove name="WebServiceHandlerFactory-Integrated"/>
          <remove name="ScriptHandlerFactory"/>
          <remove name="ScriptHandlerFactoryAppServices"/>
          <remove name="ScriptResource"/>
          <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
          <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
          <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        </handlers>
      </system.webServer>
      <runtime>
        <assemblyBinding xmlns="urnTongue Tiedchemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>
            <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
          </dependentAssembly>
          <dependentAssembly>
            <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>
            <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
    </configuration>

  • Thursday, June 05, 2008 2:43 PM
     
     Answered

     

    Replace this section entry in <confgSections>

     

    <section name="fabric" type="System.Fabric.Common.ConfigFile, FabricCommon, Culture=neutral, PublicKeyToken=null" allowLocation="true" allowDefinition="Everywhere"/>

     

    with

     

    <section name="fabric" type="System.Fabric.Common.ConfigFile, FabricCommon" allowLocation="true" allowDefinition="Everywhere"/>

     

    And your application should work fine. Actually FabricCommon is a strong-named assembly.
  • Thursday, June 05, 2008 11:31 PM
     
     

    Duh!

     

    It fixed it. Thank you for the help. I think I copied this code from the doc so you might want to check it to make sure that it is corrected there as well.