.net - 如何检测 .Net 应用程序类型?

标签 .net asp.net winforms console

我有一个需要以不同方式响应异常的库,具体取决于它是在控制台应用程序,WinForms,AspNet还是Windows Service中运行。我曾尝试查看 System.Windows.Forms 和 System.Web 命名空间中的各种属性,但找不到一种可靠的方法来准确检测托管我的库的应用程序类型。以前有人来过这里吗?有人有可靠的解决方案吗?

最佳答案

在走这条路之前,我会质疑你的设计,但我认为这是一个有趣的挑战,想看看我是否能找到。

ASP.Net:检查 HttpContext.Current 不为空。您还可以查看 System.Web.Hosting.ApplicationManager.GetApplicationManager(),但我不确定这在 Asp.net 之外会如何表现

窗口表单:您可以尝试使用System.Windows.Forms.Application.OpenForms,这将返回所有打开的表单。假设 Windows 窗体应用程序永远不会没有任何窗体。此外,控制台应用程序也可以启动 win 表单。

服务:不确定,但我想知道您是否可以检查进程名称。还必须有一个 Windows API,因为任务管理器会显示进程何时是服务(至少在 Vista 上是这样)

关于.net - 如何检测 .Net 应用程序类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/878598/

相关文章:

c# - TextInfo.ToTitleCase 对于全部大写字符串没有按预期工作

.net - 如何查找两个日期/DateTimePicker 之间的天数

c# - HttpHandler 重定向

c# - 按 T​​AB 键时绕过 DataGridView 中的只读单元格

c# - 通过 ServiceStack 加密消息

asp.net - 如何使用 MVC 属性验证列表具有大于零的非空元素?

.net - 何时使用 WCF 服务ASP.Net 页面?

c# - 将控制台应用程序移植到 winforms C#,静态类型错误

c# - Winforms 文本框掩码

C# .Net 6.0 App 的 Console.WriteLine 在 Linux 上未输出到/bin/bash