بررسی اجرا شدن برنامه در حالت سرویس در .net core
فرض کنید برای دیباگ یا در دسترس بودن امکانات بیشتر یک Agent که با .Net Core نوشته شده است در حالت پابلیش شده میخواهید قسمتی به کد اضافه کنید. بطور مثال اگر برنامه بصورت دستی و فایل exe اجرا شد از کاربر Connection String دیتابیس را بگیرد و اگر بصورت Service ویندوز اجرا شد خودکار از فایل کانفیگ آن را بخواند.
در این موارد میتوانید از کد زیر استفاده کنید:
Environment.UserInteractive
البته کد بالا در .Net Core 2.1 , 3.1 همیشه مقدار True را بازگشت میدهد و در ورژن 5.0 درست شده است.
در این مواقع میتوانید از متود زیر استفاده کنید که در ورژنهای گفته شده خروجی درست میدهد.
WindowsServiceHelpers.IsWindowsService()
البته این مورد فقط در ویندوز کار میکنند و در بقیه موارد مقدار False میدهد.