Comments (9)
I have a similar error and turn out to be the way I was accessing my appsettings.json.
Take into account that the base folder your service will be running from won't be the folder were the assembly is.
In my case I changed:
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsetings.json", false, false)
.Build();
For
var configuration = new ConfigurationBuilder()
.AddJsonFile("appsetings.json", false, false)
.Build();
And worked like a charm
from dotnetcore.windowsservice.
Yeah, the service is running from "C:\Program Files\dotnet", i wonder if it would be better to wrap the executable in a cmd and run it as the service so the base path is the one where the dll lives.
from dotnetcore.windowsservice.
I have ended up doing
Directory.SetCurrentDirectory(PlatformServices.Default.Application.ApplicationBasePath);
At the start of my process and that seems to make the service behave as I was expecting. I will try to create a pull request to include this in the base service start.
from dotnetcore.windowsservice.
I'm using at the moment
#region appSettings Initialization
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.AddEnvironmentVariables();
I'm compiling right now with
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddEnvironmentVariables();
To test.
from dotnetcore.windowsservice.
As you said, worked like a charm
from dotnetcore.windowsservice.
@ragnarol could you please help me understand what does Directory.SetCurrentDirectory do in the context of this issue and why it is needed.?
My code looks like shown below. I have so far not deployed it outside of my dev machine. Can you suggest if the code shown below needs any changes and will it be helpful to put Directory.SetCurrentDirectory as the first instruction in the InitializeConfiguration method?
private static void InitializeConfiguration()
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json");
Configuration = builder.Build();
}
public static void Main(string[] args)
{
InitializeConfiguration();
}
from dotnetcore.windowsservice.
@gitfortee Just remove .SetBasePath(Directory.GetCurrentDirectory())
The SetBasePath helps in dev to specify the path where the engine will find the appsettings, but when you publish it the service "starts" at a differently place, If you call "setbasePath" it cant find the appsettings and timesout.
from dotnetcore.windowsservice.
Latest version (2.0,1) should handle the path by itself and use the directory were the assembly is located as the base path, no need of setting it manually.
from dotnetcore.windowsservice.
Thanks.
from dotnetcore.windowsservice.
Related Issues (20)
- Cross platform support? HOT 1
- Multiple timers HOT 1
- When starting the service, then immediately stopped too
- Service did not respond to the start or control request in a timely fashion HOT 10
- Cannot run this same service twice with different names HOT 1
- Service Recovery HOT 1
- service start timeout too short HOT 1
- How to change/remove default messages shown when starting project as a console app? HOT 1
- Can there be more than on Service HOT 2
- Message shown when service is installed is incorrect HOT 1
- Implement OnCustomCommand
- What has changed in 2.0.11? HOT 2
- cannot start service xxx on computer '.'
- Stopping and starting a service without admin rights HOT 1
- Target netstandard
- Question: How to use ExitCode?
- How to start service with a .Net Core 3.0 single file exe
- Can you support WEBSITE ?
- How to setup (start) service with Automatic(Delayed start) with .net core 3.0
- at DasMulli.Win32.ServiceUtils.ServiceHandle.Start() at DasMulli.Win32.ServiceUtils.Win32ServiceManager.CreateService(String serviceName, String displayName, String description, String binaryPath, Win32ServiceCredentials credentials, Boolean autoStart, Boolean startImmediately, ErrorSeverity errorSeverity) at PeterKottas.DotNetCore.WindowsService.ServiceRunner`1.Install(HostConfiguration`1 config, ServiceController sc, Int32 counter) at PeterKottas.DotNetCore.WindowsService.ServiceRunner`1.UsingServiceController(HostConfiguration`1 config, Action`2 action) at PeterKottas.DotNetCore.WindowsService.ServiceRunner`1.Run(Action`1 runAction) The service did not respond to the start or control request in a timely fashion
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dotnetcore.windowsservice.