I come from the desktop application world (WPF, WinForms), where the convention is to deploy your exe to \Program Files[ (x86)]\CompanyName\AppName\
directory, and store all the data in \Program Data\CompanyName\AppName\
directory.
What's the corresponding convention for deploying Asp.NET Core web services on a desktop (not a server) PC? Program Files
directory doesn't seem like a good idea, because it requires admin credentials for writing, a problem you hit the moment you try to publish the app. On the other hand, while Program Data
doesn't have the permission problem, it just doesn't feel right, given there is no corresponding Program Files
location.
I've also seen C:\intepub\wwwroot\web-service-name
used, when IIS was involved. Is that the way to go? I'm guessing it makes sense when running Asp.Net Core app in Kestrel behind IIS as reverse proxy, but what if I were to host my app inside a Windows Service instead?
There is a lot of enduser as well as enterprise apps deployed as windows services with embedded web applications (using Apache, tomcat..etc) Under Program Files
, Ex: HPE server admin/config tools.
So for Kestrel APP, I would deploy bin in Program Files
and write logs,DB,etc under Program Data
. it will works without permission issues since dotnet
binary has the needed perms.