mongodb asp.net会话提供程序:如何在web.config中设置应用程序名称



问题:

我有一个自定义的MongoDB会话提供程序。它在web.config中配置如下

<sessionState cookieless="false" timeout="20" regenerateExpiredSessionId="true" mode="Custom" customProvider="MongoSessionStoreProvider">
      <providers>
        <add name="MongoSessionStoreProvider" type="MongoSessionStore.MongoSessionStoreProvider" writeExceptionsToEventLog="true"/>
      </providers>
</sessionState>

但它抛出了一个异常,因为应用程序名称为"/">
如何设置应用程序名称
我不会定义任何会员提供商,也不会很快定义一个

查看源代码,applicationName属性将执行以下操作:

<add name="MongoSessionStoreProvider" applicationName="myapplicationname"
    type="MongoSessionStore.MongoSessionStoreProvider" 
    writeExceptionsToEventLog="true"/>

您不仅忘记指定应用程序名称,还忘记指定到mongodb的连接字符串。完整配置应该如下所示:

 <sessionState cookieless="false" timeout="20" regenerateExpiredSessionId="true"
                 mode="Custom" customProvider="MongoSessionStoreProvider">
     <providers>
       <add name="MongoSessionStoreProvider"
            connectionString="mongodb://admin(admin):1@localhost:27020/" 
            applicationName="ApplicationName"
            type="MongoSessionStore.MongoSessionStoreProvider" 
            writeExceptionsToEventLog="false" />
      </providers>
    </sessionState>

一些注意事项:

  1. 应用程序名称将是mongodb中集合的名称。(数据库名称为AspSessionStage(
  2. 如果您的mongodb安装没有--auth,您可以从连接字符串admin(admin):1@中取出auth信息
  3. 此提供程序不清除过期的会话(需要运行一些后台作业才能清除(
  4. 你可以直接向我报告你可能发现的任何错误

最新更新