我想使用该会话状态,因为Inproc是不可靠的。我需要在配置文件中设置该模式,但不知道如何...有人可以帮助我吗?
我从aspnet_regsql工具获得的异常
xception:
无法连接到SQL Server数据库。
System.Web.HttpException(0x80004005):无法连接到SQL Server数据库。 ---> System.Data.SqlClient.SqlException(0x80131904):建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供者:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接) 在System.Data.SqlClient.SqlInternalConnection.OnError(SqlException异常,布尔breakConnection) 在System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() 在System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo,SqlInternalConnectionTds connHandler,Boolean ignoreSniOpenTimeout,Int64 timerExpire,Boolean encrypt,Boolean trustServerCert,Boolean integratedSecurity) 在System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo,String newPassword,Boolean ignoreSniOpenTimeout,TimeoutTimer timeout,SqlConnection owningObject) 在System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo,String newPassword,Boolean redirectedUserInstance,SqlConnection owningObject,SqlConnectionString connectionOptions,TimeoutTimer timeout) at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject,TimeoutTimer timeout,SqlConnectionString connectionOptions,String newPassword,Boolean redirectedUserInstance) 在System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity标识,SqlConnectionString connectionOptions,Object providerInfo,String newPassword,SqlConnection owningObject,Boolean redirectedUserInstance) 在System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions选项,Object poolGroupProviderInfo,DbConnectionPool池,DbConnection owningConnection) 在System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection,DbConnectionPool池,DbConnectionOptions选项) 在System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) 在System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) 在System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) 在System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) 在System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection,DbConnectionFactory connectionFactory) 在System.Data.SqlClient.SqlConnection.Open() at System.Web.Management.SqlServices.GetSqlConnection(String server,String user,String password,Boolean trusted,String connectionString) at System.Web.Management.SqlServices.GetSqlConnection(String server,String user,String password,Boolean trusted,String connectionString) at System.Web.Management.SqlServices.SetupApplicationServices(String server,String user,String password,Boolean trusted,String connectionString,String database,String dbFileName,SqlFeatures features,Boolean install) 在System.Web.Management.ConfirmPanel.Execute()
答案 0 :(得分:1)
如果你没有在sql上创建会话数据库,首先需要运行一个工具来使用aspnet_regsql.exe工具创建它。
DATABASENAME = AnyNameOfServerState
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>aspnet_regsql.exe -ssadd -sstype c -d DATABASENAME -E
此工具的更多内容:http://msdn.microsoft.com/en-us/library/ms229862(VS.80).aspx
其次,您可以使用集成安全性进行连接,而不使用用户名和密码。 在连接字符串
上设置此项<add name="SqlState" connectionString="Data Source=localhost;DataBase=AnyNameOfServerState;Integrated Security=True" providerName="System.Data.SqlClient"/>
这转到system.web
<sessionState mode="SQLServer" sqlConnectionString="SqlState" allowCustomSqlDatabase="true" cookieless="false" timeout="20"/>
更多细节。如果转到net目录,则会看到包含.sql扩展名的文件列表。其中一个是InstallSqlState.sql,这是该工具用来创建数据库的那个。如果你打开它,你可以看到运行的是什么。
答案 1 :(得分:0)
您还可以使用StateServer。您可以按照此处的分步指南进行操作
http://dotnetguts.blogspot.com/2009/06/steps-for-session-inproc-mode-to.html
我希望您了解每个会话状态的优缺点,以便您可以为您的应用选择合适的会话状态。