【问题标题】:IIS SQL Server Session state errorIIS SQL Server 会话状态错误
【发布时间】:2015-01-12 11:53:14
【问题描述】:

我正在尝试将会话状态添加到 SQL Server,但无法使其正常工作。

我首先尝试将以下连接字符串添加到配置中:

 sessionState mode="SQLServer"
 sqlConnectionString="Server=XXXXXX;Database=ASPState;Integrated Security=true"

并得到以下错误:

sqlConnectionString 属性或其引用的连接字符串不能包含连接选项DatabaseInitial CatalogAttachDbFileName。为了允许这样做,allowCustomSqlDatabase 属性必须设置为 true,并且应用程序需要被授予不受限制的 SqlClientPermission。如果应用程序没有此权限,请与您的管理员联系。

然后我尝试将allowCustomSqlDatabase="true" 添加到连接字符串并得到以下错误:

System.Data.SqlClient.SqlException:对象名称“tempdb.dbo.ASPStateTempApplications”无效。

这看起来像是在尝试连接到 tempdb 而不是 ASPState 数据库。

任何想法如何让它使用 ASPState 数据库?

干杯

安迪

【问题讨论】:

  • 使用 Aspnet_regsql.exe 为 stateserver 创建数据库。检查这个link
  • 数据库已创建。 secord 错误似乎是在尝试使用 tempdb 数据库而不是 ASPState 数据库。
  • 是的,这就是它的作用,查看这篇KB 和这篇KB 文章
  • 使用持久状态 exe 有帮助吗?
  • 是的,持久状态 exe 创建会话状态数据库,但我无法在 IIS 中设置会话状态以使用此数据库。这是我之前遇到的错误。我似乎只能使用 tempdb 让它工作

标签: sql asp.net sql-server iis


【解决方案1】:

正如here所说:

如果您不向 SQL Server 添加会话状态,当您将网站配置为使用 SQL Server 模式会话状态时,您会收到由 System.Data.SqlClient.SqlException 类生成的以下错误消息:

无效的对象名称“tempdb.dbo.ASPStateTempSessions”。

所以你应该按照上面链接中步骤1的说明,使用aspnet_regsql.exe生成所需的表和其他东西。

工具的完整路径是:

<system drive>:\Windows\Microsoft.NET\Framework\<.NETFrameworkversion>\aspnet_regsql.exe

也看看这个:https://stackoverflow.com/a/3151315/5675763

重要更新

来自here

如果使用aspnet_regsql向导,默认不添加会话表,所以需要运行以下命令...

上面链接中的命令是这样的:

aspnet_regsql.exe -S <servername> -E -ssadd -sstype p  

此命令将添加 AspState 数据库并使用当前 Windows 登录。

如果您想将会话状态表和存储过程添加到数据库中,您应该使用以下命令:

aspnet_regsql.exe -S <server_address> -U <sql_username> -P <sql_password> -d <database_name> -ssadd -sstype c

您可以使用此command reference 来使用更多选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    • 2010-10-22
    • 2018-12-01
    • 2023-03-10
    • 1970-01-01
    • 2012-12-11
    相关资源
    最近更新 更多