我的项目是TopShelf创建的窗口服务。它将数据存储在本地数据库中,但出现错误:
System.Data.Entity.Core.EntityException:基础提供程序在打开时失败>System.Data.SqlClient.SqlException:用户登录失败"User">
我的字符串连接是:
<connectionStrings>
<add name="ValeQpsContext" connectionString="Data Source=.SQLEXPRESS01;Initial Catalog=Vale.Qps;Integrated Security=False;
User Id=USER; Password=xxxx"
providerName="System.Data.SqlClient" />
</connectionStrings>
我的数据库是一个使用SQL EXPRESS的本地数据库,我的服务作为本地系统运行。
这是在数据库中存储数据的方法:
public static void Insert<T>(T entity)
where T : class
{
try
{
using (var ctx = new MyContext())
{
ctx.Entry(entity).State = System.Data.Entity.EntityState.Added;
ctx.SaveChanges();
}
}
catch (Exception ex)
{
throw ex;
}
}
这是一个完全的内部例外:
基础提供程序在打开时失败。System.Data.Entity.Core.EntityException:基础提供程序在打开时失败>System.Data.SqlClient.SqlException:用户登录失败"User"。em System.Data.ProviderBase.DbConnectionPool.TryGetConnection em System.Data_ProviderBase.DbConnectionPool.TryGetConnection em System.Data_ProviderBase.DbConnectionFactory.TryGetConnectionem System.Data\.Provider Base.DbConnectionInternal.TryOpenConnectionInternal em System.Data.provider base.DbConnection.Closed.TryOpenConnection em System.Data.SqlClient.SqlConnection.TryOpenInner emSystem.Data.SqlClient.SqlConnection.TryOpen em System.Data.SqlClient.SqlConnection.Open em System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher。<gt;c.b__13_0 em System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.调度em System.Data.Entity.Iinfrastructure.DbConnectionDispatcher.Open em System.Data_Entity.Core.EntityClient.EntityConnection.b__55_0 em System.Data.Intity.SqlServer.DefaultSqlExecutionStrategy。<gt;c_DisplayClass2_0.b_0 em System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute em System.Data.Entity.SqlServer.DefaultSQL ExecutionStrategy.Execut em System.Data_Entity.Core.EntityClient.EntityConnection.Open
SSMS中对数据库定义了相同的权限(USER和密码(。错误在哪里?
我找到了解决方案。我将连接字符串更改为:
<connectionStrings><add name="MyContext" connectionString="Data Source=.SQLEXPRESS01;Initial Catalog=MyDatabase;Integrated Security=SSPI;AttachDBFilename=C:Program FilesMicrosoft SQL ServerMSSQL15.SQLEXPRESS01MSSQLDATAMyDatabase.mdf;User Id=DOMAINUSER; Password=xxxxx" providerName="System.Data.SqlClient" /></connectionStrings>
我还更改命令以安装服务。添加登录用户:
MyService.exe install -username:DOMAINUSER -password:xxxx start
所以,这不是一个严重的错误,但现在可以了。