c# - Calling EF Code First from Windows Service -
i'm trying simple select system in onstart()
event of windows service.but introduce code talks database onstart()
event following error:
an exception occurred while initializing database. see innerexception details. underlying provider failed on open.
c# code:
protected override void onstart(string[] args) { try { string servername = getservername(); string serverip = getserverip(); //this line causes exception var dbcontext = new databasecontext(); bool serverexists = dbcontext.server.any(s => s.servername == servername && s.serverip == serverip); if (!serverexists) { //add server details db } } catch (exception ex) { using (var w = new streamwriter("c:\\errorfile.txt", true)) { w.writeline(datetime.now.tostring("dd mm yyyy hh:mm:ss")); w.writeline(ex.message); if (ex.innerexception != null) w.writeline(ex.innerexception.message); w.writeline(ex.stacktrace); w.writeline(); w.close(); } } }
app.config:
<configuration> <configsections> <section name="entityframework" type="system.data.entity.internal.configfile.entityframeworksection, entityframework, version=6.0.0.0, culture=neutral, publickeytoken=b77a5c561934e089" requirepermission="false" /> </configsections> <entityframework> <defaultconnectionfactory type="system.data.entity.infrastructure.sqlconnectionfactory, entityframework" /> <providers> <provider invariantname="system.data.sqlclient" type="system.data.entity.sqlserver.sqlproviderservices, entityframework.sqlserver" /> </providers> </entityframework> <connectionstrings> <add name="servicemanagerconnection" providername="system.data.sqlclient" connectionstring="integrated security=sspi;persist security info=true;initial catalog=servicemanager;data source=." /> </connectionstrings> <startup> <supportedruntime version="v4.0" sku=".netframework,version=v4.5" /> </startup> <appsettings> <add key="serviceruninterval" value="5" /> </appsettings> </configuration>
stack trace:
@ system.data.entity.internal.internalcontext.performinitializationaction(action action) @ system.data.entity.internal.internalcontext.performdatabaseinitialization() @ system.data.entity.internal.lazyinternalcontext.<initializedatabase>b__4(internalcontext c) @ system.data.entity.internal.retryaction`1.performaction(tinput input) @ system.data.entity.internal.lazyinternalcontext.initializedatabaseaction(action`1 action) @ system.data.entity.internal.lazyinternalcontext.initializedatabase() @ system.data.entity.internal.internalcontext.getentitysetandbasetypefortype(type entitytype) @ system.data.entity.internal.linq.internalset`1.initialize() @ system.data.entity.internal.linq.internalset`1.get_internalcontext() @ system.data.entity.infrastructure.dbquery`1.system.linq.iqueryable.get_provider() @ system.linq.queryable.any[tsource](iqueryable`1 source, expression`1 predicate) @ mysupersecretprojectname.program.onstart(string[] args) in c:\mysupersecretprojectname\program.cs:line 49
the problem in connection string.all had change connection string use sql user name , password credentials, because windows service created local system permissions didn't have access talk sql
Comments
Post a Comment